Programátorský úkol

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Programátorský úkol
« Odpověď #120 kdy: 12. 09. 2017, 00:52:38 »
Hm, tohle byl zcela trivialni ukol. Jesteze to neni treba o naprogramovani piskvorku, to by si urcite vyzadalo alespon tri vedecka sympozia.
Snad “piškvorek”, nebo si už pleteš i rody?

http://www.pravidla.cz/hledej/?qr=pi%9Akvorky
https://cs.wiktionary.org/wiki/pi%C5%A1kvorky#sklo.C5.88ov.C3.A1n.C3.AD

Trhni si nohou, zretelne existuji oba tvary.


Aoidhghean

Re:Programátorský úkol
« Odpověď #121 kdy: 12. 09. 2017, 01:25:06 »
Hm, tohle byl zcela trivialni ukol. Jesteze to neni treba o naprogramovani piskvorku, to by si urcite vyzadalo alespon tri vedecka sympozia.
Snad “piškvorek”, nebo si už pleteš i rody?

http://www.pravidla.cz/hledej/?qr=pi%9Akvorky
https://cs.wiktionary.org/wiki/pi%C5%A1kvorky#sklo.C5.88ov.C3.A1n.C3.AD

Trhni si nohou, zretelne existuji oba tvary.
Dík za odkaz, Tatare, wiktionary potvrzuje rod ženský.

Re:Programátorský úkol
« Odpověď #122 kdy: 12. 09. 2017, 06:59:44 »
Hm, tohle byl zcela trivialni ukol. Jesteze to neni treba o naprogramovani piskvorku, to by si urcite vyzadalo alespon tri vedecka sympozia.
Snad “piškvorek”, nebo si už pleteš i rody?

http://www.pravidla.cz/hledej/?qr=pi%9Akvorky
https://cs.wiktionary.org/wiki/pi%C5%A1kvorky#sklo.C5.88ov.C3.A1n.C3.AD

Trhni si nohou, zretelne existuji oba tvary.
Pravidla.cz jsou nesmysl, používat slovník spellcheckeru jako slovník opravdu není dobrý nápad. Oficiální slovník češtiny máte zde: http://prirucka.ujc.cas.cz/?slovo=pi%C5%A1kvorky

Zvědavec

Re:Programátorský úkol
« Odpověď #123 kdy: 12. 09. 2017, 09:00:45 »
Ono i s tím vypsáním prvního řádku a pak otočením (nebo transpozicí a reverse) může být ten algoritmus lineární, když se použijí slices nebo “view onto”. U seznamů to je běžná implementace, nicméně matice nebývají součástí standardní knihovny, takže záleží na volbě third party, ale jde to lineárně. Čili ano, s otáčením to je elegantní a jednodušší, jen člověk musí mít chytře udělané matice. I v tom Haskellu by to tak šlo.

Šlo by prosím nějak rozepsat to "slices" nebo "view onto"? Mě jediné co napadá je mít data pořád stejná, jen je obalovat objekty které budou realizovat ty požadované transformace - takže na střídačku odříznutí prvního řádku a otočení. I to ale povede ke zhoršení výkonu, protože čím dál se to dostane tím větším počtem objektů budu mít ta data obalená a přestane platit že přístup k prvku v matici je O(1).
Ty objekty se nemusí vnořovat. V objektu budete mít dva prvky – odkaz na data, a konfiguraci, jak se má s daným pohledem zacházet. Když vytvoříte nový pohled, vytvoříte nový objekt, vložíte do něj odkaz na stejná data a novou konfiguraci. Na tom původním pohledu tento nový nijak nezávisí. Samozřejmě to nelze použít tehdy, kdybyste ty transformace objektů skládal (třeba v geometrii – něco otočíte, otočený objekt zmenšíte a otočený a zmenšený objekt překlopíte podle svislé osy). Ale v případě transpozice matice není skládání potřeba, mnohem jednodušší je z aktuálního pohledu a požadované transformace odvodit konfiguraci nového pohledu.

Když se objekty nebudou vnořovat tak bude o to složitější ta konfigurace jak se má s daným pohledem zacházet - můžete totiž celkem jednoduše udělat 4 pohledy pro různé otočení matice, ale vybrání patřičných prvků nebude úplně jednoduché (protože tam nebude Xkrát vnořeno odříznutí prvního řádku), budou tam potřeba vzorečky podobně jako byly v tom řešení od Kolemjdoucího, čímž se ta rádoby krásnost krátkých řešení poněkud vytratí.

Aoidhghean

Re:Programátorský úkol
« Odpověď #124 kdy: 12. 09. 2017, 09:40:05 »
Ono i s tím vypsáním prvního řádku a pak otočením (nebo transpozicí a reverse) může být ten algoritmus lineární, když se použijí slices nebo “view onto”. U seznamů to je běžná implementace, nicméně matice nebývají součástí standardní knihovny, takže záleží na volbě third party, ale jde to lineárně. Čili ano, s otáčením to je elegantní a jednodušší, jen člověk musí mít chytře udělané matice. I v tom Haskellu by to tak šlo.

Šlo by prosím nějak rozepsat to "slices" nebo "view onto"? Mě jediné co napadá je mít data pořád stejná, jen je obalovat objekty které budou realizovat ty požadované transformace - takže na střídačku odříznutí prvního řádku a otočení. I to ale povede ke zhoršení výkonu, protože čím dál se to dostane tím větším počtem objektů budu mít ta data obalená a přestane platit že přístup k prvku v matici je O(1).
Ty objekty se nemusí vnořovat. V objektu budete mít dva prvky – odkaz na data, a konfiguraci, jak se má s daným pohledem zacházet. Když vytvoříte nový pohled, vytvoříte nový objekt, vložíte do něj odkaz na stejná data a novou konfiguraci. Na tom původním pohledu tento nový nijak nezávisí. Samozřejmě to nelze použít tehdy, kdybyste ty transformace objektů skládal (třeba v geometrii – něco otočíte, otočený objekt zmenšíte a otočený a zmenšený objekt překlopíte podle svislé osy). Ale v případě transpozice matice není skládání potřeba, mnohem jednodušší je z aktuálního pohledu a požadované transformace odvodit konfiguraci nového pohledu.

Když se objekty nebudou vnořovat tak bude o to složitější ta konfigurace jak se má s daným pohledem zacházet - můžete totiž celkem jednoduše udělat 4 pohledy pro různé otočení matice, ale vybrání patřičných prvků nebude úplně jednoduché (protože tam nebude Xkrát vnořeno odříznutí prvního řádku), budou tam potřeba vzorečky podobně jako byly v tom řešení od Kolemjdoucího, čímž se ta rádoby krásnost krátkých řešení poněkud vytratí.
Odříznutí se dělá vytvořením nového náhledu přímo nad daty, nemůže tam být víckrát. A v tomto případě se náhledy nevrší, je tam jen jedna rotace.


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Programátorský úkol
« Odpověď #125 kdy: 12. 09. 2017, 09:57:47 »
Dík za odkaz, Tatare, wiktionary potvrzuje rod ženský.

Ano, proto jsem ho tam dal, jako ukazku, ze existuji oba tvary.

Jinak az budes nekomu zase kritizovat cestinu, tak pred "nebo" se nepise carka a to uz drahne let.

ehmmm

Re:Programátorský úkol
« Odpověď #126 kdy: 12. 09. 2017, 10:03:26 »
Jinak az budes nekomu zase kritizovat cestinu, tak pred "nebo" se nepise carka a to uz drahne let.

Jak kdy:
http://prirucka.ujc.cas.cz/?id=155

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail

Aoidhghean

Re:Programátorský úkol
« Odpověď #128 kdy: 12. 09. 2017, 10:17:13 »
Dík za odkaz, Tatare, wiktionary potvrzuje rod ženský.

Ano, proto jsem ho tam dal, jako ukazku, ze existuji oba tvary.

Jinak az budes nekomu zase kritizovat cestinu, tak pred "nebo" se nepise carka a to uz drahne let.
Někdy píše, musíš znát přesná pravidla.

Aoidhghean

Re:Programátorský úkol
« Odpověď #129 kdy: 12. 09. 2017, 10:20:24 »
Dík za odkaz, Tatare, wiktionary potvrzuje rod ženský.

Ano, proto jsem ho tam dal, jako ukazku, ze existuji oba tvary.

Jinak az budes nekomu zase kritizovat cestinu, tak pred "nebo" se nepise carka a to uz drahne let.
Z toho tvého odkazu: “V pravidlech neodpovídá žádné klíčové slovo vašemu zadání piškvorek.” Sám jsi vyvrátil své tvrzení. Ale furt lepší, než když tu nějaký ještě větší Tatar psal “ten monád”. OMG

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Programátorský úkol
« Odpověď #130 kdy: 12. 09. 2017, 10:47:29 »
Někdy píše, musíš znát přesná pravidla.

Jak jsem napsal, na dany pripad se pravidlo od ehmmm nevztahuje. Tak se nauc presna pravidla a pak kritizuj.

Z toho tvého odkazu: “V pravidlech neodpovídá žádné klíčové slovo vašemu zadání piškvorek.” Sám jsi vyvrátil své tvrzení. Ale furt lepší, než když tu nějaký ještě větší Tatar psal “ten monád”. OMG

SLOVNÍ TVARY: piškvorek ~ piškvorcích ~ piškvorkem ~ piškvorku ~ piškvorkům ~ piškvorky

Ke je receno, ze jsou v seznamu *vsechny* slovni tvary? Vyse uvedene tvary jsou zretelne v muzskem rodu. Jestlize existuje treba tvar piškvorkům tam, kde druhy odkaz uvadi piškvorkám, logicky exituje i tvar piskvorku. Chapu, ten tvar tam nebyl vyslovne uveden, takze by nekdo musel premyslet.

Aoidhghean

Re:Programátorský úkol
« Odpověď #131 kdy: 12. 09. 2017, 11:03:23 »
Někdy píše, musíš znát přesná pravidla.
Jak jsem napsal, na dany pripad se pravidlo od ehmmm nevztahuje. Tak se nauc presna pravidla a pak kritizuj.
Bla bla, kecy v kleci. Když neumíš přiznat chybu, tak aspoň nepruď.

Aoidhghean

Re:Programátorský úkol
« Odpověď #132 kdy: 12. 09. 2017, 11:10:34 »
Z toho tvého odkazu: “V pravidlech neodpovídá žádné klíčové slovo vašemu zadání piškvorek.” Sám jsi vyvrátil své tvrzení. Ale furt lepší, než když tu nějaký ještě větší Tatar psal “ten monád”. OMG

SLOVNÍ TVARY: piškvorek ~ piškvorcích ~ piškvorkem ~ piškvorku ~ piškvorkům ~ piškvorky

Ke je receno, ze jsou v seznamu *vsechny* slovni tvary? Vyse uvedene tvary jsou zretelne v muzskem rodu.
To je jak u Zemana na dvorku  :o Argumentuješ tvarem generovaným automaticky nějakým morfologickým modulem. To takhle jeden zadal do analyzátoru ruštiny vyvinutém na MFF UK v 80. letech кровать a vypadlo mu я кроваю, ты кроваешь... Tolik k argumentaci za použití něčeho, o čem víš kulový.

Aoidhghean

Re:Programátorský úkol
« Odpověď #133 kdy: 12. 09. 2017, 14:30:19 »
Nemel jsem uplne cas cist cele vlakno, jak je tedy slozitost reseni v big O notaci pro to "otaceci" reseni?
Jinak i když v tomto případě je to jednoduché a všechny ty manipulace jsou O(1) a “nekupí” se (nezhoršují tedy časovou složitost, je-li algoritmus aspoň lineární), v obecném případě se jejich řetězení a jeho optimalizace řeší word problémem - tam teprve začíná legrace.

HLF

Re:Programátorský úkol
« Odpověď #134 kdy: 12. 09. 2017, 14:37:56 »
Začal jsem se učit programovat ve Visual Basicu, s tím že jsem nikdy předtím neprogramoval. A mám asi za sebou 6 hodin učení čistého času.

Skusil jsem si jednoduchou variantu, kdy člověk zadá A a B a tím určí velikost "číselného" čtverce/obdélníku s posloupností +1 po řádcích. No a ono to vyhodí toho "číselného hada". Tak se chci pochlubit - trvalo mi to asi 2 hodiny.  :D

Kód: [Vybrat]
Sub main()

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim z As Integer
Dim x As String
Dim y As Integer
Dim i As Integer

a = InputBox("Zadej A")
b = InputBox("Zadej B")

c = a
d = b

z = 0

Do Until c <= 2

    c = a - i
    d = b - y

    Do Until c < 1
        z = z + 1
        x = x + Str(z) + " "
        c = c - 1
    Loop
   
    c = a - i
   
    Do Until d < 2
        z = z + a
        x = x + Str(z) + " "
        d = d - 1
    Loop
   
    d = b - y
   
    Do Until c < 2
        z = z - 1
        x = x + Str(z) + " "
        c = c - 1
    Loop
   
    c = a - i
   
    Do Until d < 3
        z = z - a
        x = x + Str(z) + " "
        d = d - 1
    Loop
   
    i = i + 2
    y = y + 2
   
Loop
   
MsgBox x

End Sub