-
Posts
69 -
Joined
-
Last visited
Profile Information
-
Location
.sh
Recent Profile Visitors
3702 profile views
Raul's Achievements
-
Testat, este in regula, a trecut toate testcase-urile, kudos! Testat, este in regula, a trecut toate testcase-urile, kudos! Solutia mea (Golang) este urmatoarea: var hes = map[int32]string{1: "one", 2: "two", 3: "three", 4: "four", 5: "five", 6: "six", 7: "seven", 8: "eight", 9: "nine", 10: "ten", 11: "eleven", 12: "twelve", 13: "thirteen", 14: "fourteen", 15: "quarter", 16: "sixteen", 17: "seventeen", 18: "eighteen", 19: "nineteen", 20: "twenty", 21: "twenty one", 22: "twenty two", 23: "twenty three", 24: "twenty four", 25: "twenty five", 26: "twenty six", 27: "twenty seven", 28: "twenty eight", 29: "twenty nine", 30: "half"} func theClock(h int32, m int32) string { var out string if m == 0 { out = hes[h] + " o' clock" } else if m == 1 { out = hes[m] + " minute past " + hes[h] } else if m == 15 || m == 30 { out = hes[m] + " past " + hes[h] } else if m < 30 { out = hes[m] + " minutes past " + hes[h] } else if m == 45 { out = hes[60-m] + " to " + hes[h+1] } else { out = hes[60-m] + " minutes to " + hes[h+1] } return out } * Problema este adaptata de la ceva asemanator gasit pe HackerRank
-
Twenty minutes to one. Ai grija la constrangeri.
-
Rezolvarea este partial corecta, deoarece trebuie tradus complet in text, la tine ramanand numerele netraduse. Pe langa asta, nu respecti, in totalitate, constrangerile. Ce sa-ti spun, iti recomand sa citesti si sa intelegeti tot ce zice aici (legat de prima dilema), si ce zice aici (legat de a doua dilema). Evident, astea sunt niste lucruri foarte basic, ar trebui sa le aprofundezi, daca chiar te intereseaza. Dupa aia, mai uita-te pe aici.
-
Propun o noua problema, una care poate parea putin mai ciudata, dar este destul de interesanta. Dat orice interval orar (ora de pe ceas, efectiv), acesta se poate converti in cuvinte din limbaj natural, sub forma urmatoare: Pentru o valoare a minutului data, asta inseamna (notat cu m) cand m = 0, atunci se foloseste o' clock cand 1 <= m <= 30, atunci se foloseste past cand m > 30, atunci se foloseste to Se cere scrierea unei functii care returneaza timpul dat sub forma de text, in limbaj natural, respectand regulile de mai sus. Ca input, se dau doua valori intregi si naturale, notam h si m, unde h reprezinta ora, iar m reprezinta minutul. Constrangeri 1 <= h <= 12 0 <= m < 60 Exemple Pentru h = 5 si m = 47, rezulta "thirteen minutes to six" Pentru h = 3 si m = 00, rezulta "three o' clock" Pentru h = 7 si m = 15, rezulta "quarter past seven" Limbajul care va fi folosit este la alegere libera. Sunt acceptate toate solutiile, indiferent de complexitatea timp, dar trebuie incercat sa se rezolve in O(1). O solutie personala va fi pusa ulterior. Spor!
-
Intr-adevar, o intrebare extrem de dificila, care necesita extrem de multa gandire si precizie.
-
Testat, este in regula, a trecut toate testcase-urile, kudos!
-
Te ajuta @aelius, el este alesul!
-
Testat, este in regula, a trecut toate testcase-urile, kudos! Solutia mea (Golang) este urmatoarea: func solve(B []int32) int { counter, sum, ok := 0, 0, true for _, v := range B { sum += v if sum % 2 == 1 { ok = false counter += 2 continue } ok = true } if !ok { return -1 } return counter } * Problema este adaptata de la ceva asemanator gasit pe HackerRank
-
Esti destul de aproape, dar, din pacate, solutia nu este complet valida. O sa pun aici niste testcase-uri pe care da fail. Link: https://pastebin.com/iZwL3Gjn
-
Propun o noua problema care necesita o logica buna. Se da un array de numere intregi si pozitive. Singura alterare permisa a elementelor din array este incrementarea acestora, strict cu valoarea 1. Toate numerele din array trebuie sa devina pare, intr-un final, cu un numar minim de incrementari, dar respectand regula urmatoare: atunci cand se face o incrementare pe pozitia i din array, in mod obligatoriu se face incrementare fie pe pozitia i-1, fie pe pozitia i+1. Se cere returnarea numarului minim de incrementari, astfel incat, in final, toate numerele din array sa fie pare. In cazul in care input-ul nu este valid, deci nu se poate ajunge la un rezultat corect, se va returna -1. Constrangeri: Se considera N a fi numarul de elemente din array, iar 2 <= N <= 1000 1 <= V[i] <= 10, iar 0 <= i <= N-1 Exemplu #1: Se da V = [4,5,6,7]. Se face incrementare, la primul pas, pe i = 2 si respectiv i = 3, deci va rezulta array-ul V = [4,5,7,8]. Acum, la pasul urmator, se va face incrementare pe i = 1 si respectiv i = 2, deci va rezulta array-ul V = [4,6,8,8]. In final, se intoarce numarul de incrementari facute, mai exact 4. Exemplu #2: Se da V = [2,3,4,5,6]. Se face incrementare, la primul pas, pe i = 1 si respectiv i = 2, deci va rezulta array-ul V = [2,4,5,5,6]. Acum, la pasul urmator, se va face incrementare pe i = 2 si respectiv i = 3, deci va rezulta array-ul V = [2,4,6,6,6]. In final, se intoarce numarul de incrementari facute, mai exact 4. Exemplu #3: Se da V = [1,2]. Oricum s-ar face incrementare, una dintre valori va fi mereu para, iar cealalta impara. Prin urmare, nu se poate ajunge la un rezultat corect, deci se intoarce -1. Limbajul care va fi folosit este la alegere libera. Sunt acceptate toate solutiile, indiferent de complexitatea timp, dar trebuie incercat sa se rezolve in maxim O(N). O solutie personala va fi pusa ulterior. Spor!
-
Mi-am dat seama ca nu se intelegea foarte clar treaba asta, de aceea am si modificat, acum sigur nu mai sunt dileme.
-
Exemplul dat cu 4879 este gresit, nefiind un numar Kaprekar (pe baza definitiei din textul problemei), dupa cum a demonstrat si Andruk. Bazeaza-te pe definita data in textul problemei, nu pe altceva. Am modificat acum ca sa fie mai clar, acum sigur nu mai sunt dileme. Imi pare rau pentru confuzia creata! Rezolvarea ta nu este corecta, ai 3/7 testcase-uri care pica. In principal, problema e ca nu validezi corect si apar numere care nu sunt Kaprekar (evident, pe baza definitiei din textul problemei). Exemplu: Input: p = 1000, q = 10000 Output asteptat: 2223 2728 4950 5050 7272 7777 9999 Output-ul tau: 2223 2728 4879 4950 5050 5292 7272 7777 9999 LE: Solutia mea (Golang) este urmatoarea: func kaprekar(p, q int64) { for i := p; i <= q; i++ { x := i * i xS := len(fmt.Sprintf("%d", x)) if xS % 2 == 1 { xS++ } d := int64(math.Pow(10, float64(xS/2))) l, r := x / d, x % d if i == l + r { fmt.Printf("%d ", i) } } } * Problema este adaptata de la ceva asemanator gasit pe HackerRank
-
Am testat, solutia este valida, kudos! Sunt binevenite si alte propuneri, in continuare.
-
De data aceasta, propun un challenge care nu necesita prea multe cunostinte in structuri de date, ci o logica buna. O definitie necesara: In matematica, un numar Kaprekar, pentru o baza data, este un numar intreg si pozitiv, al carui valoare ridicata la patrat, in aceeasi baza, poate fi impartita in doua bucati, iar suma numerelor din aceste doua bucati rezulta efectiv in numarul original. Numarul se imparte in doua parti egale (sau +1 la una dintre parti, atunci cand este un numar impar de cifre), nu se fac "variante". Exemplu: 45 este un numar care respecta regula (numar Kaprekar), deoarece 45² = 2025 si 20+25 = 45. Alte exemple: 9 respecta regula, deoarece 9² = 81 si 8+1 = 9; 297 respecta regula, deoarece 297² = 88209 si 88 + 209 = 297. ATENTIE: Aceasta nu reprezinta definitia oficiala in totalitate, este o variatie, problema trebuie rezolvata pe baza la ce se spune aici. A se observa ca in ultimul exemplu, numarul ridicat la patrat se imparte intr-o bucata de lungime doi si celalalta de lungime trei, deoarece are un numar impar de cifre, fata de cazurile in care ar fi un numar par de cifre. De asemenea, trebuie avut grija, daca una dintre cele doua bucati incepe cu un 0. Se dau doua numere intregi, p si q, si se cere sa se afiseze toate numerele Kaprekar din respectivul interval (inclusiv p si q); 0 < p < q < 100000 Exemplu: p = 1, q = 100; se va afisa "1 9 45 55 99", acestea fiind numerele care respecta regula. Limbajul care va fi folosit este la alegere libera. Solutiile cu complexitate timp mai mare decat O(N) sunt respinse. O solutie personala va fi pusa ulterior. Spor!