Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.

Soutěž: Machr na algoritmy - Sudoku

Ostatní jazyky Ostatní programovací jazyky Machr na algoritmy - Sudoku

Soutěž již skončila

Zadání

Jak již název machra napovídá, budete si tentokrát hrát se sudoku. Přesněji řečeno ho budete řešit. Ještě přesněji řečeno napíšete konzolovou aplikaci, která ho vyřeší za vás.

Vstup bude vypadat nějak takto:

_ _ _ 1 _ 2 _ _ _
3 _ 9 8 _ 4 1 _ 7
8 _ _ _ _ _ _ _ 2
_ 3 _ 4 _ 6 _ 7 _
4 _ _ _ _ _ _ _ 1
_ 1 _ 2 _ 5 _ 9 _
5 _ _ _ _ _ _ _ 8
1 _ 6 5 _ 3 9 _ 4
_ _ _ 6 _ 8 _ _ _

(mezi znaky jsou mezery, rozložení chybějících čísel může být jakékoli)
Výstup bude stejný, jen místo podtržítek vypíšete doplněné číslice.

Pokud by se stalo, že řešení existuje více, vypište jedno z nich, je jedno které.

Povolené jazyky: C, C++, C#, Pascal, Java, Python
Pokud budete chtít použít jiný (nebo budete mít nějaký dotaz k soutěži), zeptejte se v komentářích.

Výhra

Vítěz dostane placku Machr a ocenění do portfolia.

Výhra

Soutěžící

Jméno Odesláno
Lukáš Křehula 24.11.2016 21:53
Vlado Cukalovsky 25.11.2016 17:10
D0ll0k 28.11.2016 21:47 (Aktualizováno 3.12.2016 11:49)
Michael Škrášek 30.11.2016 16:41 (Aktualizováno 3.12.2016 11:54)
patrik.valkovic 1.12.2016 16:33
grygerek.tomas 2.12.2016 3:10 (Aktualizováno 2.12.2016 9:51)
Libor Šimo (libcosenior) 2.12.2016 17:38 (Aktualizováno 3.12.2016 9:18)
Luboš Běhounek (Satik) 2.12.2016 18:34
krepsy3 3.12.2016 1:37
rikenbekr 3.12.2016 5:30
LukasMegPrask 3.12.2016 9:01
Ladislav Ondris 3.12.2016 11:27
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

V této soutěži budete řešit sudoku.

Soutěž končí 3. prosince 12:00, tak se nezapomeň zapojit! :)

Odpovědět  +1 21.11.2016 0:49
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Jan Bezdíček
Redaktor
Avatar
Jan Bezdíček:

PHP CLI ? :D

 
Nahoru Odpovědět 21.11.2016 1:00
Avatar
Jan Bezdíček
Redaktor
Avatar
Jan Bezdíček:

A vubec ... proc CLI, formular pro policka a zpracovani v PHP, muze byt ? :)

 
Nahoru Odpovědět 21.11.2016 3:48
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Jan Bezdíček
Zdeněk Pavlátka:

Může být, pokud vstup bude řešen pomocí 1 textarea do kterého zadám to samé co ostatním. A výstup bude vyřešený nějak inteligentně, aby se dal zkopírovat jako text v takové podobě, jako mají mít výstup ostatní (třeba v tom samém textarea ;) ).

Nahoru Odpovědět 21.11.2016 12:45
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Dráb:

Vstup na aplikaci bude čekat na standardním vstupu, nebo se očekává, že název vstupního souboru bude třeba jedním za rgumentů příkazové řádky?

Nahoru Odpovědět  +2 21.11.2016 12:50
2 + 2 = 5 for extremely large values of 2
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Dráb
Zdeněk Pavlátka:

Standardní vstup, standardní výstup

Nahoru Odpovědět  +1 21.11.2016 15:12
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Petr Stastny:

Budu tedy zadání načítat ze souboru a vypisovat do konzole? A sudoku bude 9x9, nebo to mám někde nechat uživatele vybrat?

 
Nahoru Odpovědět 21.11.2016 15:48
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Petr Stastny
Martin Dráb:

Standardní vstup = zadání načteš ze standardního vstupu (nějaký ten input stream, std::cin v C++), což může a nemusí být ve skutečnosti soubor. Podobně s výstupem.

Nahoru Odpovědět  +2 21.11.2016 15:53
2 + 2 = 5 for extremely large values of 2
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Petr Stastny
Zdeněk Pavlátka:

Bude to klasické 9×9 sudoku

Nahoru Odpovědět 21.11.2016 16:25
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
krepsy3:

Dobře, já ale dělám v C#. To tě to mám nechat psát do konzole? Nebo dva texťáky in.txt a out.txt? Nebo úprava jednoho texťáku? Nebo výběr pře ty console args?

Nahoru Odpovědět 21.11.2016 22:17
Programátor je stroj k převodu kávy na kód.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na krepsy3
Zdeněk Pavlátka:

V C# standardní vstup a výstup == Console.

Nahoru Odpovědět 21.11.2016 23:14
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
krepsy3:

Čili postupně vyplníš a odentruješ 9 řádků? A devět dostameš?

Nahoru Odpovědět 22.11.2016 8:18
Programátor je stroj k převodu kávy na kód.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 22.11.2016 9:47
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Pjanus
Člen
Avatar
Pjanus:

Mohl bych pro řešení použít Haskell?

 
Nahoru Odpovědět 22.11.2016 18:01
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 22.11.2016 19:44
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Petr Stastny
Redaktor
Avatar
Petr Stastny:

Tak mám zatím 2 algoritmy, ten první 'hloupý' vyřeší jenom velmi jednoduché sudoku. Ten druhý, chytrý, prohlásí každé zadání které dostane za neplatné :D

Jak jste daleko?

 
Nahoru Odpovědět  +2 23.11.2016 18:48
Avatar
Pavel Novák
Člen
Avatar
Pavel Novák:

Dotaz: normální sudoku 9×9, odentruješ každé číslo a potom ti má vyjet správné řešení a napsat, jestli to měl dotyčný správně? Nebo jen jestli to měl nebo neměl správně a ukončit?

Nahoru Odpovědět 23.11.2016 18:58
Nikdy se nevzdávat!
Avatar
Petr Stastny
Redaktor
Avatar
Odpovídá na Pavel Novák
Petr Stastny:

Jestli jsem to správně pochopil, tak:

  • Načteš sudoku - 9x Console.ReadLine(), přičemž podtržítko _ je prázdno a číslo je ... číslo, odděleno mezerou
  • Vyřešíš sudoku, tedy doplníš čísla místo podtržítek ze zadání
  • Vykreslíš sudoku
 
Nahoru Odpovědět  +3 23.11.2016 19:01
Avatar
Odpovídá na Zdeněk Pavlátka
Josef Kuchař (Pepa489):

Bude to jako one line nebo multiline vstup ?

Nahoru Odpovědět 23.11.2016 19:12
2x piš, jednou debuguj
Avatar
Pavel Novák
Člen
Avatar
Odpovídá na Petr Stastny
Pavel Novák:

"Vykreslíš sudoku" - celý jeho řešení nebo správný řešení?

Nahoru Odpovědět 23.11.2016 19:17
Nikdy se nevzdávat!
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

PRO VŠECHNY, KDO TO DOSUD NEPOCHOPILI:
Na standardním vstupu dostanete 9 řádek, na každé bude 9 číslic / podtržítek oddělených mezerami.
Na standardní výstup vypíšete 9 řádek, na každé bude 9 číslic oddělených mezerami.
Výstup je správný:

  1. pokud je platným řešením (dle klasických pravidel sudoku)
  2. pokud na dané pozici ve vstupu byla číslice, bude stejná jako ta na výstupu
Nahoru Odpovědět  +3 23.11.2016 19:53
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Petr Stastny
Michael Škrášek:

Zatím jsem si rozvrhl program a vyřešil tu sudoku sám :D

Nahoru Odpovědět  +2 23.11.2016 20:55
Proč to dělat složitě, když to jde jednoduše.
Avatar
Pavel Novák
Člen
Avatar
Nahoru Odpovědět 23.11.2016 21:01
Nikdy se nevzdávat!
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Petr Stastny
Martin Dráb:

Zatím jsem ve stavu doufání, že mi to zabere max. dva večery :-). Takže je ještě spooousta času.

Nahoru Odpovědět  +1 23.11.2016 21:53
2 + 2 = 5 for extremely large values of 2
Avatar
Jan Bezdíček
Redaktor
Avatar
Jan Bezdíček:

Tak ja si napsal "na koleni resic sudoku" ... vlozil tam toto sudoku a byl cely stastny, ze to funguje a uz jsem to pomalu nahraval. No pak jsem zjistil, ze sudoku jsou i slozitejsi, nez jen takove, ktere se resi tim, ze "kouknu jestli je to v radku, sloupci nebo "3x3 bloku" a bude opravdu treba pouzit algoritmus.

Tak jsem si zasel pro zmrzlinu, zapnul TBBT a se slzou v oku si jdu lehnout ...

 
Nahoru Odpovědět  +4 24.11.2016 2:21
Avatar
Jan Vargovský
Redaktor
Avatar
Jan Vargovský:

Hint: Kdo si to chce fakt otestovat, tak si najděte nějaký task na nějakém online judgi (uva, ...) :)

 
Nahoru Odpovědět  +1 24.11.2016 17:58
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Jan Bezdíček
Jan Vargovský:

Ono to jde, jen to chce backtrackovat, když už to "nemá" řešení :)

 
Nahoru Odpovědět  +2 24.11.2016 17:59
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Jan Vargovský
gcx11:

Kromě toho, co vypsal Jan Bezdíček, tak existují i další metody při řešení. Backtracking bych použil, až když i ty další metody selžou.

 
Nahoru Odpovědět  +1 24.11.2016 19:25
Avatar
Petr Stastny
Redaktor
Avatar
Petr Stastny:

...

Editováno 24.11.2016 20:30
 
Nahoru Odpovědět  -2 24.11.2016 20:29
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Moze sa stat, ze testovacie zadanie nebude riesitelne?

Nahoru Odpovědět  +4 26.11.2016 13:44
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Libor Šimo (libcosenior)
Zdeněk Pavlátka:

Pro každý zadaný vstup bude existovat alespoň jedno řešení.

Nahoru Odpovědět  +1 26.11.2016 18:19
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Dik. Aj ked vlastne by na jedno zadanie malo podla prisnych pravidiel existovat iba jedno riesenie. ;-)

Editováno 26.11.2016 18:21
Nahoru Odpovědět 26.11.2016 18:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět 26.11.2016 21:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Libor Šimo (libcosenior)
Zdeněk Pavlátka:

Aj ked vlastne by na jedno zadanie malo podla prisnych pravidiel existovat iba jedno riesenie.

Tak nějak nechápu, co tím myslíš...

Nahoru Odpovědět  +1 26.11.2016 22:09
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Dráb:

Podle mě tím naráží na to, že správné Sudoku má mít právě jedno řešení. Ale setkal jsem se s různými variantami (jen čísla 1-6, některá políčka není možné vyplnit...), takže v tomto nevidím problém.

Nahoru Odpovědět 26.11.2016 22:54
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Dnes som o sudoku precital velke mnozstvo stranok a niekde som sa docital, ze prave sudoku ma vzdy len jedno riesenie.
Myslim, ze to nemusime brat az tak vazne, na nete sa toho popise.... :-D

Nahoru Odpovědět  +2 26.11.2016 22:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

Možná, že to tak páni Japonci původně zamýšleli, když sudoku vzniklo. Ona právě ta nejednoznačnost je při papírovém řešení s tužkou v ruce to nejhorší, člověk nemá jistotu, že mu to nejednoznačné řešení neudělá nějakou paseku. Takže proč ne, na algoritmus by to nemělo mít vliv. Pokud nebude používat náhodně generované řady čísel, bude mít při prvním řešení vždy nižší index nižší číslo než jeho protějšek s vyšším indexem (resp. vyšší, záleží na směru iterací).

Editováno 26.11.2016 23:10
Nahoru Odpovědět 26.11.2016 23:09
Programátor je stroj k převodu kávy na kód.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na krepsy3
Zdeněk Pavlátka:

Pro účely této soutěže by na počtu řešení moc nemělo záležet (tedy až na to, že nějaké existuje). U výstupu programů se nebude kontrolovat jedno konkrétní, ale to, jestli splňuje základní pravidla, takže je úplně jedno, které vypíšete.

Nahoru Odpovědět  +3 26.11.2016 23:49
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
krepsy3:

Ještě se chci zeptat na to bodování. Předpokládám, že budeš testovat např. 20 různě obtížných vstupů, s tím, že oboduješ podle úspěšnosti. Jaká budou přesně další kritéria i s počty bodů

Nahoru Odpovědět 27.11.2016 8:43
Programátor je stroj k převodu kávy na kód.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na krepsy3
Zdeněk Pavlátka:

Popravdě to ještě nemám na 100% rozhodnuté, zatím to vypadá že polovina bodů bude daná úspěšností v řešení 20 vstupů,

Nahoru Odpovědět 27.11.2016 11:57
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Nudil jsme se na dvou přednáškách ve škole, tak tam máte i něco mojeho :D

Nahoru Odpovědět 1.12.2016 16:36
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Sorry, mam hrube prsty a klikol som nechtiac na minus. :-(

Nahoru Odpovědět 1.12.2016 18:42
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Tak som tiež niečo vytvoril. Dúfam, že sa bude páčiť. :-P

Nahoru Odpovědět 2.12.2016 17:40
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Zdenku, tak sa mi zda, ze toto bude tazke vyhodnocovanie. 8-)

Nahoru Odpovědět  +1 2.12.2016 18:54
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
patrik.valkovic:

Příliš deterministické zadání :D Není to zas takový problém vypočítat, byť jen hrubou silou.

Nahoru Odpovědět  +2 2.12.2016 19:41
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Práve preto asi bude ťažké rozhodnúť o víťazovi.

Nahoru Odpovědět  +1 2.12.2016 19:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

Velkou roli bude tedy jistě hrát správný objektový návrh (nemám), přehledný kód (snad mám tak napůl) a zakomentvání :D

Nahoru Odpovědět  +1 2.12.2016 20:07
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

oprava: zakomentování (ještě nemám) :D

Noc bude dnes dlouhá...

Nahoru Odpovědět 2.12.2016 20:53
Programátor je stroj k převodu kávy na kód.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
IT Man:

Ale tak zase pěkné vidět tolik soutěžících. :)

Nahoru Odpovědět  +2 2.12.2016 22:34
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Dominik Chrastek:

Prolog?

Nahoru Odpovědět 2.12.2016 22:48
Matematika: jednoduchá pravidla, složité následky.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na IT Man
krepsy3:

No, to jo ty káre... :D
Já už na tom zítra nebudu moct dělat, takže to musím dodělat teď, což je celkem fór, protože jsem si špatně navrhl rekurzi, takže celou hlavní smyčku předělávám odznova ;)

Nahoru Odpovědět  +1 2.12.2016 22:49
Programátor je stroj k převodu kávy na kód.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 2.12.2016 23:16
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Dominik Chrastek
patrik.valkovic:

To by mě zrovna zajímalo, jak by to v něm vypadalo :D
A protože ho děláme ve škole :D

Nahoru Odpovědět 2.12.2016 23:45
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Nahoru Odpovědět  +1 3.12.2016 5:30
In world without fences and walls, who needs Gates and Windows?
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na rikenbekr
krepsy3:

No, jak vidíš, kód jsem dokončil cca. o půl druhé. Rozběhat se mi to podařilo už něco po čtvrt na jednu (od půl dvanácté jsem tam hledal asi tři bugy - nějaké chybějící podmínky a tak), a tu hodinu jsem jen psal ///summary k veřejným metodám a třídám a zakomentovával jsem interní kódy. Ani bych nevěřil, že to může zabrat tolik času, dohromady ty všechny soubory měly (před komentováním) cca. 220 řádek. Takže nechápu, jak je to možné :D

Nahoru Odpovědět 3.12.2016 8:39
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Dominik Chrastek
krepsy3:

Co je to za jazyk? :D

Editováno 3.12.2016 8:40
Nahoru Odpovědět 3.12.2016 8:40
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
krepsy3:

Hele psal jsi, že každé sudoku bude mít alespoň jedno řešení, já se třeba pachtil i s tím, kdyby náhodou nemělo. A jak teda bude probíhat bodování programů, máž už to rozmyšleno? Docela by mě to zajímalo, i když kód už mám finální ;)

Nahoru Odpovědět 3.12.2016 8:44
Programátor je stroj k převodu kávy na kód.
Avatar
Michal Haňáček:

Škoda, chtěl jsem se zůčastnit, mám rozepsanej kód ale nestíhám to odladit ... tak třeba příště ;).

Nahoru Odpovědět 3.12.2016 8:52
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na krepsy3
Libor Šimo (libcosenior):

Nemôžem odpovedať za Zdenka, ale myslím si, že to rozhodne až po prezretí a otestovaní aplikácií.

Nahoru Odpovědět  +2 3.12.2016 9:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na krepsy3
patrik.valkovic:

To je čiště logický jazyk :D
Skvěle se hodí na problémy typu "máte 5 domů, v nich žije 5 lidí, člověk číslo 1 chodí na návštěvu k 3, v domě 4 bydlí Pavel.....kdo bydlí v jakém domě" :D
Ono by to na ty piškvorky šlo, ale bylo by to velice neefektivní (i když by stačilo jen pár řádků), protože podle toho jak Prolog funguje by bruteforcoval všechny možnosti :/

Nahoru Odpovědět  +2 3.12.2016 11:19
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

A nemoze tych 5 ludi zit v jednom z 5 domov? :-D

Nahoru Odpovědět  +1 3.12.2016 11:44
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
D0ll0k
Člen
Avatar
D0ll0k:

Uff.... ještě jsem přišel na způsob jak ten algorytmus urychlit, když najednou nám vypadl internet a já se bál, že nenaskočí dříve jak ve dvanáct a já to nestihnu odevzdat.

Nahoru Odpovědět 3.12.2016 11:53
Ten, co se snaží "programovat"
Avatar
Libor Šimo (libcosenior):

Neviem ci tu pojde gif, ak ano, v prilohe si ho pozrite.

Nahoru Odpovědět  +4 3.12.2016 13:23
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

Nechápu pointu. Je fakt že sem značně nevyspalý tak možná budu psát nesmysly.
Ale vypadá to jako by minimálně část toho sudoku z gifu byla tipovaná. Toto zadání lze ale řešit tou nejjednoduší metodou a to přímo (bez tipování).

Nahoru Odpovědět 3.12.2016 14:06
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Je to len ukazka, ako moze pracovat backtracking, ktory vyriesi kazde riesitelne zadanie.

Nahoru Odpovědět 3.12.2016 14:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

Jo aha, vaše práce?

Editováno 3.12.2016 14:24
Nahoru Odpovědět  +1 3.12.2016 14:23
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Na sieti si tykame a nie, len som to skopcil z webu. ;-)

Nahoru Odpovědět  +1 3.12.2016 14:28
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

No to sem už slyšel a četl, ale mě doma učili starším lidem vykat :) a zvyk je železná košile.

Editováno 3.12.2016 14:29
Nahoru Odpovědět  +3 3.12.2016 14:28
In world without fences and walls, who needs Gates and Windows?
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

12 lidí na machra...to tu už dlouho nebylo :D

Nahoru Odpovědět  +2 3.12.2016 16:21
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Hold zaujimave zadanie, na ktore si mnohi trufnu.
Len sa bojim, ze kym to Zdenek vyhodnoti, pretecie vela vody.

Nahoru Odpovědět 3.12.2016 16:25
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
rikenbekr:

Takže o bodech rozhodne hlavně přehlednost kódu? Bude slovní hodnocení?

Nahoru Odpovědět 3.12.2016 16:28
In world without fences and walls, who needs Gates and Windows?
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na D0ll0k
krepsy3:

Odkdy píšeš algorYtmus? :D

Ne, nejsem grammar nazi, ale s D0ll0kem se tak trochu známe :)

Nahoru Odpovědět 3.12.2016 16:33
Programátor je stroj k převodu kávy na kód.
Avatar
D0ll0k
Člen
Avatar
Nahoru Odpovědět 3.12.2016 16:35
Ten, co se snaží "programovat"
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Mna by skor zajimalo ako sa da porovnat apka v neobjektovom jazyku s apkou v objektovom, teda ak riesenie vsetkych zadani bude spravne a rychle.

Editováno 3.12.2016 16:37
Nahoru Odpovědět 3.12.2016 16:36
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

A taky bylo hodně času, během těch 12 dní prostě mělo víc lidí čas a motivaci o tom popřemýšlet a něco zplácat :D
Tohle byl třeba můj první pokus na machrovi, u těch 5 denních jsem si většinou řekl, že "to nestíhám" :)

Nahoru Odpovědět 3.12.2016 16:36
Programátor je stroj k převodu kávy na kód.
Avatar
D0ll0k
Člen
Avatar
Odpovídá na krepsy3
D0ll0k:

Teď nad tím tak přemýšlím... asi jsem to napsal i ve zdrojáku s tvrdym Y

Nahoru Odpovědět 3.12.2016 16:36
Ten, co se snaží "programovat"
Avatar
Odpovídá na D0ll0k
Libor Šimo (libcosenior):

Neboj, za to nebudu body dolu. :-)

Nahoru Odpovědět 3.12.2016 16:39
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

To je zajímavý problém... Spíš asi není od věci to, že porotce jazyky zná, ví co jde a nejde a "pozná dobrý kód", i když si moc netroufnu říct, nakolik je to subjektivní, když nikdo asi není takovej magor, aby posílal do machra kód s věcmi typu

int uhfekwubfi = 3, febiwofnjkkl = 8; atd. :D:D:D

Editováno 3.12.2016 16:41
Nahoru Odpovědět  +1 3.12.2016 16:39
Programátor je stroj k převodu kávy na kód.
Avatar
D0ll0k
Člen
Avatar
Nahoru Odpovědět 3.12.2016 16:40
Ten, co se snaží "programovat"
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na D0ll0k
krepsy3:

Neboj... a Fröhlichová (naše češtinářka) tyhle slova nezná... :D

Nahoru Odpovědět 3.12.2016 16:42
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na D0ll0k
Libor Šimo (libcosenior):

Hlavne aby si mal tvrdy algorYtmus v kode. ;-)

Nahoru Odpovědět 3.12.2016 16:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

Tak ono mu to běá krásně, ještě to má urychlený cachováním možných čísel pro každou pozici, takže tvrdý je algoritmus jistě dostatečně ;)

Nahoru Odpovědět  +1 3.12.2016 16:48
Programátor je stroj k převodu kávy na kód.
Avatar
Libor Šimo (libcosenior):

To som sa pokusal aj ja, ale zrychlenie som nevidel.

Nahoru Odpovědět 3.12.2016 16:51
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Cakam na vysledky.
Dohovoril som. Howk!

Nahoru Odpovědět 3.12.2016 17:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Škoda že se nehodnotí rychlost....bych ty vaše C# rozbil jak nic :D

Nahoru Odpovědět 3.12.2016 17:10
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na patrik.valkovic
krepsy3:

Jako s c++? Tak to asi jo... :D Vo hodně :D

Nahoru Odpovědět 3.12.2016 17:23
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na patrik.valkovic
Luboš Běhounek (Satik):

Za jak dlouho ti to vyřeší tohle sudoku?:

___1_2___
8_______2
___4___7_
4_______1
_1___5___
________8
1__5_____
_____8___
:)
Nahoru Odpovědět 3.12.2016 17:53
:)
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět  +1 3.12.2016 18:03
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Luboš Běhounek (Satik)
Libor Šimo (libcosenior):

Si robíš srandu?
Musel som porušiť sľub mlčania po Howk, ale máš tam len 8 riadkov.

Nahoru Odpovědět  +1 3.12.2016 18:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
patrik.valkovic:

Úplně prázdné sudoku vyřeším někde pod 100ms. Ale to je irelevantné, vzhledem k tomu že máme jiné stroje ;-)

Nahoru Odpovědět 3.12.2016 18:07
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Nahoru Odpovědět 3.12.2016 18:09
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Luboš Běhounek (Satik):

To je slušný, to moje c# řešení mi doma běželo myslím podobně rychle, předpokládám ale, že máš asi pomalejší procesor, takže to máš rychlejší :)

Nahoru Odpovědět 3.12.2016 18:16
:)
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
Zdeněk Pavlátka:

když počítám jen řešení (ne vstup a výstup) tak to u mě běží 14 ms (C#)

Nahoru Odpovědět 3.12.2016 18:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Nahoru Odpovědět 3.12.2016 18:28
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
patrik.valkovic:
9 7 6 1 8 2 5 4 3
8 5 4 9 7 3 6 1 2
3 2 1 4 5 6 8 7 9
4 9 8 6 3 7 2 5 1
7 1 2 8 9 5 4 3 6
6 3 5 2 4 1 7 9 8
1 8 9 5 6 4 3 2 7
2 4 7 3 1 8 9 6 5
5 6 3 7 2 9 1 8 4

real    0m0.010s
user    0m0.008s
sys     0m0.000s

Včetně parsování a výpisu.

Nahoru Odpovědět 3.12.2016 18:28
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Vstup = pole zadané v kóde
Kontrola špatného vstupu
Výstup.

Nahoru Odpovědět 3.12.2016 18:29
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Pár případů se mi podařilo dostat pod 0,006s reálného času, ale je to ještě ve virtuálce, takže by se to dalo ještě stáhnout :D

Nahoru Odpovědět 3.12.2016 18:37
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Libor Šimo (libcosenior):

No hold amaterovi sa tazko zrovnava s vystudovanym profikom. :-`

Nahoru Odpovědět 3.12.2016 18:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
patrik.valkovic:

No do vystudování mám ještě daleko :D Na minulé úloze z prográmka jsme strávil 60 hodin :/

Nahoru Odpovědět 3.12.2016 18:46
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
rikenbekr:

Takže když jsem to psal v C a čisté řešení trvá 6 ms, tak je to dobré nebo špatné?
Procesor: Intel core i5-5200U

Nahoru Odpovědět 3.12.2016 22:23
In world without fences and walls, who needs Gates and Windows?
Avatar
Nahoru Odpovědět 4.12.2016 7:42
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

To nechápu, včera to bylo 6 ms a dneska ráno je to 15 ms. Jak měříte časový intervalu v C?

Nahoru Odpovědět 4.12.2016 13:23
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Ja to neriesim. Necham ukoncit program a v konzole s vypise vysledok.
Rozdielne vysledky su ovplyvnene behom ineho probramu na pozadi.
Staci viac krat spustit a dostanes sa na to povodne.

Nahoru Odpovědět 4.12.2016 13:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

Jak nechám ukončit program? To je C#?
A pořád to nevysvětluje 0 ms, to je nemožné.
Navíc včera to bylo stabilní a to byl počítač více zatížen.

Editováno 4.12.2016 14:13
Nahoru Odpovědět 4.12.2016 14:12
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Ale nie, je to c. Aby program v c po spusteni exe suboru len nepreblikol na obrazovke, treba na koniec funkcie main, pred return 0, napisat napr. getchar(), aby konzola oatala otvorena, kym nebude stlacena nejaka klavesa.

Nahoru Odpovědět 4.12.2016 14:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Cize nechat ukoncit program znamena zakomentovat riadok getchar().

Nahoru Odpovědět 4.12.2016 14:19
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
rikenbekr:

No já to původně tvořil na Linuxu a proto tam nic podobného nemám protože textové prostředí nemá kam zmizet.
Když si otevřu cmd ve Windows a spustím program tak to vypíše jenom to co sem posílal.

Nahoru Odpovědět 4.12.2016 14:32
In world without fences and walls, who needs Gates and Windows?
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

No já to původně tvořil na Linuxu a proto tam nic podobného nemám (čekání na stisk klávesy) protože textové prostředí nemá kam zmizet.
Když si otevřu cmd ve Windows a spustím program tak to vypíše jenom to co sem posílal.
Sorry za double post ale zmizelo mi tlačítko edit

Nahoru Odpovědět 4.12.2016 14:49
In world without fences and walls, who needs Gates and Windows?
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
krepsy3:

Tak můj C# udělal Lubošovo Sudoku za ostudných 298 ms :D (měřeno Visual studiem pomocí kroková v debugu)

Můj stroj: Dell Inspiron 13 7000 series (2015)

Nahoru Odpovědět 4.12.2016 15:57
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Libor Šimo (libcosenior):

Skusil si aj release? Tam by to malo byt o nieco lepsie.

Nahoru Odpovědět 4.12.2016 16:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Dnes som testoval ciastocne pouzitie binarnych operacii, ale rychlost sa zatial nezlepsila.

Nahoru Odpovědět 4.12.2016 16:18
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Ono je asi skoro jedno aky jazyk pouzijes. Ak je kod napisany optimalne, strojrovy kod asi bude rovnaky alebo skoro rovnaky.

Editováno 4.12.2016 16:22
Nahoru Odpovědět 4.12.2016 16:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

Spouštíte program v příkazové řádce, nebo nějakém vývojovém prostředí?

Nahoru Odpovědět 4.12.2016 16:27
In world without fences and walls, who needs Gates and Windows?
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na krepsy3
patrik.valkovic:

Debug verze je mnohem pomalejší než Release. Můj program to udělal za 30ms bez optimalizace a za 6ms s optimalizací (to fakt píšu tak hrozně?!), takže zkus release a pustit to z příkazové řádky. Čas měřím (na linuxu) pomocí

time ./main.exe < vstup.txt

Jen je problém, že například já dělám už nějaké výpočty během parsování, takže těžko otestuju program bez načtené vstupů a výstupu :D

Nahoru Odpovědět 4.12.2016 16:52
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Ak sa hodnoti aj cas, je fajn ze to nehodnotis ty. :-D

Nahoru Odpovědět 4.12.2016 17:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Priznam sa, chcel by som machra. :-)

Editováno 4.12.2016 17:15
Nahoru Odpovědět  +1 4.12.2016 17:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

Ono paradoxně před rokem jsem dělal něco podobného (tentokrát jsem pro měnu vyplňova Kakuro) do školy, ale to jsem nestihl :D A tohle jsem měl za 3 hodiny napsané, je fajn vidět nějaký progress ;-)

Nahoru Odpovědět 4.12.2016 17:40
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na patrik.valkovic
rikenbekr:

Tak jsem to skusil na Linuxu:
Doba běhu bez výpočetní části (in, out):

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Výstup celého programu

Solve :
7 3 6 1 5 2 8 4 9
8 4 5 7 6 9 1 3 2
2 9 1 4 8 3 5 7 6
4 5 2 8 7 6 3 9 1
9 1 8 3 2 5 4 6 7
6 7 3 9 1 4 2 5 8
1 8 9 5 4 7 6 2 3
5 2 7 6 3 8 9 1 4
3 6 4 2 9 1 7 8 5

real    0m0.007s
user    0m0.004s
sys     0m0.000s

Mám k tomu otázku:
co jsou ty jednotlivé časy(real, user, sys)?
Tyto výsledky jsou z terminálu otevřeném v grafickém prostředí.
Když jsem zkusil to samé v textovém sezení byl real 15 - 28 ms cca.
Všiml si někdo že to zadání co se tu testovalo má vícero řešení? (každý ho má jiné)

Nahoru Odpovědět 4.12.2016 17:48
In world without fences and walls, who needs Gates and Windows?
Avatar
rikenbekr
Člen
Avatar
Odpovídá na patrik.valkovic
rikenbekr:

Je nějaký způsob jak změřit kolik kterých instrukcí program provedl? To by bylo nejobjektivnější srovnání.
Jsem jediný kdo používá textový editor a kompilátor v příkazové řádce (gcc)? :D

Editováno 4.12.2016 17:52
Nahoru Odpovědět 4.12.2016 17:50
In world without fences and walls, who needs Gates and Windows?
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na rikenbekr
patrik.valkovic:

sys je systémové volání - to znamená jak dlouho čekal tvůj program na nějakou operaci systému (například přidělení paměti), real je reálný čas, jak dlouho proces běžel (včetně započítání jiných procesů, které běžely na pozadí atd, no a user je skutečný čas, který běžel jen samotný program (bez započítání jiných procesů).
Instrukce jdou provést pomocí

valgrind --tool=callgrind ./main.exe < input.txt

Spočítá celkový počet instrukcí (nebo volání nebo co to počítá) a řekne ti i v jaké funkci trávíš nejvíce času, jak se funkce mezi sebou volají (a kolikrát) a podobné užitečné věci. Pro prohlížení logu používám kcachegrind.

Nahoru Odpovědět  +1 4.12.2016 17:55
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Libor Šimo (libcosenior):

Myslim, ze to nechame na Zdenka. Aj tak ma tazku ulohu.

Nahoru Odpovědět  +1 4.12.2016 18:27
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

No, to jo. O "vyloučení" budou muset nejpíš rozhodovat i blbiny.

Výstup bude stejný, jen místo podtržítek vypíšete doplněné číslice.

Já jsem si uvědomil, že ve výstupu číslice mezerami neodděluji... :(

Nahoru Odpovědět 4.12.2016 20:59
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

Priznam sa, chcel by som machra. :-)

To asi každý... :D

Nahoru Odpovědět  +1 4.12.2016 21:00
Programátor je stroj k převodu kávy na kód.
Avatar
Libor Šimo (libcosenior):

Do pekla, binárne operácie veľmi nepomohli, ale niečo iné áno.
Vyskúšajte toto zadanie:

"_ _ _ _ 9 _ _ _ 7",
"_ _ _ 2 _ _ 9 8 _",
"_ 4 _ 8 3 _ _ _ 1",
"_ _ _ _ _ _ 7 _ 2",
"_ _ _ _ _ _ _ 1 _",
"_ _ 1 _ 7 _ 3 _ _",
"4 _ 8 _ 1 _ _ _ 5",
"_ _ _ 9 2 _ _ 7 3",
"9 _ 2 _ _ 8 _ _ _"

Pred úpravami v kóde som mal čas 0,127 s.
Po úpravách je v prílohe. (je tam aj špecifikácia PC)

Nahoru Odpovědět 5.12.2016 10:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
patrik.valkovic:

Čím se ti to podařlo stáhnout ten čas?

Nahoru Odpovědět 5.12.2016 10:21
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Libor Šimo (libcosenior):

Teraz pozerám, že mi to spravilo chybu vo výpočte. :-(

Nahoru Odpovědět 5.12.2016 10:22
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Zatiaľ to nemám odladené, ale skúšam 2 cykly, ktoré sa veľa krát opakujú, nahradiť priamym zadaním.
Pre pochopenie:

for (i = 0; i < 9; i++) {
        if (niečo == i + 1)
                vykonaj;
}
if (niečo == 1)
        vykonaj;
if (niečo == 2)
        vykonaj;
if (niečo == 3)
        vykonaj;
........
if (niečo == 9)
        vykonaj;
Nahoru Odpovědět 5.12.2016 10:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Už som to opravil a aj tak sa čas trochu znížil.

Nahoru Odpovědět 5.12.2016 11:03
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

Tak můj C# to tvoje udělal za 286 ms :D :O

Nahoru Odpovědět 5.12.2016 11:15
Programátor je stroj k převodu kávy na kód.
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

Tak koukám že to asi nějak blbne. Zkusil jsem Liborovo Zadání několikrát:

  • - 61 ms
  • 401 ms
  • 34 ms
  • 265 ms
  • - 34 ms
  • - 63 ms

Wtf?

Editováno 5.12.2016 11:19
Nahoru Odpovědět 5.12.2016 11:19
Programátor je stroj k převodu kávy na kód.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
patrik.valkovic:

]:-> ]:-> Někdo se vám možná podaří být rychlejší jak C

Nahoru Odpovědět 5.12.2016 11:20
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

A kde přesně jste využil binární operace?

Nahoru Odpovědět 5.12.2016 11:20
In world without fences and walls, who needs Gates and Windows?
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

Tak už mi to dělá dobře - Liborovo Sudoku cca. 3154 ms :O:O

A přitom

_ _ _ _ _ _ _ 5 6
_ _ _ 2 _ 3 4 1 _
_ 3 _ _ _ 8 _ _ 9
_ _ 6 _ _ 9 _ 4 7
1 _ _ _ _ _ _ _ 3
3 8 _ 4 _ _ 9 _ _
8 _ _ 6 _ _ _ 3 _
_ 5 4 3 _ 7 _ _ _
7 9 _ _ _ _ _ _ _

tohle mi to udělá za cca. 20 ms! :O

Nahoru Odpovědět 5.12.2016 11:23
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Luboš Běhounek (Satik):

Generátor náhodných čísel :D

Jinak jsem si všimnul, že moje verze se zasekne na zadání, které nemá řešení - sice jsem tuhle variantu zkoušel, ale to bylo ještě než jsem přidal backtracking - u něj jsem se zapomněl zamyslet nad zadáním, které nemá řešení.

Ještě by se mohlo zkusit, jak moc by to zrychlilo přepsat to z LINQ čistě na cykly a pole/listy.

Nahoru Odpovědět 5.12.2016 11:34
:)
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
patrik.valkovic:

Zkus parallel LINQ jestli to tam má někde smysl :D

Nahoru Odpovědět  +1 5.12.2016 11:42
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Napr. na porovnanie čísiel:

(if (!(x ^ y))
        ....;
Nahoru Odpovědět 5.12.2016 11:50
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

A ešte raz k tomu môjmu zadaniu. V prílohe sú najnižšie hodnoty bez úpravy a s úpravou.

Nahoru Odpovědět 5.12.2016 11:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Nahoru Odpovědět 5.12.2016 12:26
In world without fences and walls, who needs Gates and Windows?
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
krepsy3:

On byl nějaký problém s odečítáním DateTimů pomocí mínusu, ale kámoš D0ll0k mi poradil, ať použiju DateTime.Substrac­t();, a už to fachá normálně, výsledky jsou zhruba stejné. Jinak znovu: můj stroj: Dell Inspiron 13 7000 series (2015), specs si můžete najít :D

Nahoru Odpovědět 5.12.2016 12:50
Programátor je stroj k převodu kávy na kód.
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na krepsy3
Martin Dráb:

Moc bych DateTime nevěřil, co se týče přesnosti, která nemusí být zrovna na milisekundy, ale může se odvíjet např. od délky časového kvanta pro plánování vláken na procesoru (což může znamenat granularitu třeba 10-16 ms). Takže to chce zprůměrovat větší množství pokusů, aby takové měření o něčem vypovídalo.

Nahoru Odpovědět  +2 5.12.2016 15:09
2 + 2 = 5 for extremely large values of 2
Avatar
homestead
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
homestead:

Zadanie od Satika má strašne veľa riešení, asi za 10 min. mi to našlo 95000 riešení a to som musel prerušiť. Dobré zadanie by malo mať len jedno riešenie...

Nahoru Odpovědět 5.12.2016 16:09
Žiť a nechať žiť...
Avatar
Odpovídá na homestead
Libor Šimo (libcosenior):

To sme tu uz riesili. Ako vysledok staci prve funkcne riesenie. Preto je cas vypoctu taky kratky.

Nahoru Odpovědět 5.12.2016 16:14
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
homestead
Člen
Avatar
homestead:

libcosenior - zadanie má len jedno riešnie. Vyriešené za 0,055 sek.

Nahoru Odpovědět 5.12.2016 16:15
Žiť a nechať žiť...
Avatar
Nahoru Odpovědět 5.12.2016 16:16
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
homestead
Člen
Avatar
homestead:

v c #, ale algoritmus som našiel na internete a upravil...

Nahoru Odpovědět 5.12.2016 16:18
Žiť a nechať žiť...
Avatar
homestead
Člen
Avatar
Odpovídá na krepsy3
homestead:

krepsy3 - len jedno riešenie, 0,013 sek.

Nahoru Odpovědět 5.12.2016 16:25
Žiť a nechať žiť...
Avatar
Nahoru Odpovědět 5.12.2016 16:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na homestead
rikenbekr:

Jestli myslíš to od satika tak to má mnoho řešení. Zkontroluj jestli splňují řešení jednotlivých lidí podmínky a jsou stejná.

Nahoru Odpovědět 5.12.2016 17:21
In world without fences and walls, who needs Gates and Windows?
Avatar
homestead
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
homestead:

nesuťažil som preto, lebo to mám z internetu... nie je to moje riešenie a nebudem sa chváliť cudzím perím

Nahoru Odpovědět 5.12.2016 17:53
Žiť a nechať žiť...
Avatar
Odpovídá na homestead
Libor Šimo (libcosenior):

Pravdou je, ze na vacsinu sutazi najdes riesenie na nete, ale zalezi ako to pouzijes. Skopirovat bez pochopenia je hulvatske, pochopit, upravit, vylepsit je podla mna OK.
Aby si ma spravne pochopil.
Koleso bolo vymyslene a ty uz nove nevymyslis, ale mozes ho maximalne vylepsit.

Editováno 5.12.2016 18:00
Nahoru Odpovědět 5.12.2016 17:58
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
homestead
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
homestead:

Áno, aj som si myslel, že sa to kopíruje, lebo vymyslieť takýto algoritmus, by som určite sám od seba nevedel. Ale na druhej strane načo vymýšlať niečo, čo je už vymyslené. Ja len závidím dnešným mladým, ktorý chodia do školy, že si všetko nájdu na nete.

Nahoru Odpovědět 5.12.2016 18:05
Žiť a nechať žiť...
Avatar
Nahoru Odpovědět  +1 5.12.2016 18:06
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
homestead
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
homestead:

Asi som starší od teba :), ja mám 60...

Nahoru Odpovědět 5.12.2016 18:07
Žiť a nechať žiť...
Avatar
Nahoru Odpovědět 5.12.2016 18:10
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
homestead
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
homestead:

Až teraz som pozeral tvoj profil a tam máš 57, podľa fotky nevyzeráš..

Nahoru Odpovědět 5.12.2016 18:11
Žiť a nechať žiť...
Avatar
Odpovídá na homestead
Libor Šimo (libcosenior):

Vyzeram starsie, ale nevadi. Mam plan do 130 rokov. ;-)

Nahoru Odpovědět 5.12.2016 18:12
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Martin Dráb
krepsy3:

Moc bych DateTime nevěřil, co se týče přesnosti, která nemusí být zrovna na milisekundy, ale může se odvíjet např. od délky časového kvanta pro plánování vláken na procesoru (což může znamenat granularitu třeba 10-16 ms). Takže to chce zprůměrovat větší množství pokusů, aby takové měření o něčem vypovídalo.

Jasně, ale orientačně ti to postačí - víš jestli je to asi 10 ms, 50 ms, 200 ms nebo 2000 ms :D

Nahoru Odpovědět  +1 5.12.2016 18:25
Programátor je stroj k převodu kávy na kód.
Avatar
Libor Šimo (libcosenior):

Schválne som nechal spočítať koľko krát sa pri riešení volala rekurzia.

Nahoru Odpovědět 6.12.2016 7:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

Tak to to řešíte asi více hrubou silou.

Nahoru Odpovědět 6.12.2016 7:25
In world without fences and walls, who needs Gates and Windows?
Avatar
Odpovídá na rikenbekr
Libor Šimo (libcosenior):

Skús toto zadanie.
"_ _ _ _ 9 _ _ _ 7",
"_ _ _ 2 _ _ 9 8 _",
"_ 4 _ 8 3 _ _ _ 1",
"_ _ _ _ _ _ 7 _ 2",
"_ _ _ _ _ _ _ 1 _",
"_ _ 1 _ 7 _ 3 _ _",
"4 _ 8 _ 1 _ _ _ 5",
"_ _ _ 9 2 _ _ 7 3",
"9 _ 2 _ _ 8 _ _ _"

Nahoru Odpovědět 6.12.2016 7:48
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
rikenbekr:

Omlouvám se měl jsem připravená dvě zadání a upsal jsem se :).

Nahoru Odpovědět  +1 6.12.2016 11:03
In world without fences and walls, who needs Gates and Windows?
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na rikenbekr
patrik.valkovic:

Nemám tam rekurzi...nesnáším rekurzi :-@

Nahoru Odpovědět  +1 7.12.2016 16:22
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Nahoru Odpovědět 7.12.2016 16:34
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
patrik.valkovic:

No právě spíše ne. Rekurze ukládá další zbytečné informace, ještě k tomu na zásobník. Zásobník je cenější resource než halda.

Nahoru Odpovědět 7.12.2016 16:40
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Libor Šimo (libcosenior):

Asi mas pravdu, tak hlboko do toho nevidim.

Nahoru Odpovědět 7.12.2016 16:42
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
patrik.valkovic:

No ono ve chvíli, kdy ti spadne program protože StackOverflow (přitom se nikdy nezacyklil, ale byl napsán korektně), tak to začneš řešit :D

Nahoru Odpovědět 7.12.2016 16:43
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na patrik.valkovic
rikenbekr:

To je pravda, ale v tomto případě to bylo přehlednější řešení navíc paměť v řádu 100 bajtů zabraná naví není taková katastrofa.

Nahoru Odpovědět 7.12.2016 16:48
In world without fences and walls, who needs Gates and Windows?
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Zdeněk Pavlátka
patrik.valkovic:

Jak to vypadá s vyhodnocením? ;-)

Nahoru Odpovědět 12.12.2016 9:31
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na patrik.valkovic
Zdeněk Pavlátka:

bledě - hodně účastníků, málo času

Nahoru Odpovědět 12.12.2016 9:52
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Ja len dufam, ze to stIhnes do casu, aby vyherca (ci) dostali placku do Vianoc, urcite by ich to potesilo.

Nahoru Odpovědět 12.12.2016 20:18
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
rikenbekr:

Chápu že je to nadlouho, ale na kolik procent je to +- ohodnocené?

Nahoru Odpovědět 15.12.2016 21:01
In world without fences and walls, who needs Gates and Windows?
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na rikenbekr
Zdeněk Pavlátka:

cca na 5 :/ a kvúli škole se to asi nějakou dobu nezvedne

Nahoru Odpovědět 15.12.2016 21:19
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
rikenbekr
Člen
Avatar
Nahoru Odpovědět 15.12.2016 21:27
In world without fences and walls, who needs Gates and Windows?
Avatar
Nahoru Odpovědět 25.12.2016 18:53
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
rikenbekr:

Nechci otravovat, ale pořád trvá školní vytížení?

Nahoru Odpovědět  +2 7. ledna 12:01
In world without fences and walls, who needs Gates and Windows?
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na rikenbekr
Zdeněk Pavlátka:

Tenhle týden zápočty, od příštího pondělí zkouškové.

Nahoru Odpovědět 9. ledna 9:32
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
rikenbekr
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
rikenbekr:

Ok, díky za info. A ať vám zkouškové dobře dopadne :).

Nahoru Odpovědět 9. ledna 10:06
In world without fences and walls, who needs Gates and Windows?
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Zdeněk Pavlátka
patrik.valkovic:

Ale notak, zase to nepřeháněj.

Nahoru Odpovědět 9. ledna 10:08
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Prosim o konkretny termin vyhodnotenia.
Prepac, ale uz to je skoro ako vyhodnotenie rocnej sutaze na hru.

Nahoru Odpovědět  +1 15. ledna 19:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Zdenku, 12 clenov caka na vyhodnotenie svojej prace PRED ROKOM.

Nahoru Odpovědět 15. ledna 19:25
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
krepsy3:

Nevím jestli před rokem, ale z loňska rozhodně. Mezitím už jsi vyhlásil dalšího machra. Takže jestli to nestihneš, nakupí se ti toho ještě víc. PROČ???

Nahoru Odpovědět 15. ledna 19:49
Programátor je stroj k převodu kávy na kód.
Avatar
Odpovídá na krepsy3
Libor Šimo (libcosenior):

Dalsieho machra nevyhlasil Zdenek, ale Patrik, ktory tiez sutazi (ak sa nemylim). Nevadi mi, ze organizuje sutaze. Proste ho to oslovilo.

Nahoru Odpovědět 15. ledna 20:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na krepsy3
Libor Šimo (libcosenior):

Mne skor pripada ten novy macher ako dokaz, ze vyhodnotenie moze byt rychlejsie. JE to len moj nazor.

Nahoru Odpovědět 15. ledna 20:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 186 zpráv z 186.