Jak se pozná senior

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Jak se pozná senior
« Odpověď #255 kdy: 21. 12. 2016, 07:48:47 »
Jejda... ještě vyměnit
Kód: [Vybrat]
01 RES PIC 9(3).za
Kód: [Vybrat]
01 RES PIC ZZ9.a je to dokonalý :D


spasitel

Re:Jak se pozná senior
« Odpověď #256 kdy: 21. 12. 2016, 08:13:14 »
no ty blaho, tady na rootu jsou vetsi blbci nez jsem si myslel :o

gll

Re:Jak se pozná senior
« Odpověď #257 kdy: 21. 12. 2016, 08:28:17 »
No nechtěl jsem to zvrhnout na debatu, který jazyk je lepší...
To je téměř stejně dlouhé jako řešení v c. Slušný jazyk by měl umožňovat vygenerování podobné tabulky jedinou vektorizovanou operací, pouze s použitím vestavěných funkcí a operátorů.
Tak haskell zrovna žádné vestavěné operátory nemá.. takže to je už z pricipu nepoužitelný jazyk....
Kód: [Vybrat]
hyper :: (Functor f, Functor g) => (a -> b -> c) -> f a -> g b -> f (g c)
hyper f xs ys = fmap (flip fmap ys . f) xs
(<<*>>) :: (Functor f, Functor g, Num a) => f a -> g a -> f (g a)
(<<*>>) = hyper (*)
A hned má haskel hyperoperátor... on už to dokonce někdo napsal v nějaké knihovně.... ale asi se to zrovna často nepoužívá - jo a není to omezené na listy, ale funguje to na jakýkoliv funktor.
Citace
Tisk tabulky je také hodně ukecaný a printf ani není součástí prelude. Haskell sucks.
Printf je taky docela hnusná funkce, která by principiálně v žádném pořádném programu být neměla, poněvdž není staticky typovaná... mně perl vždycky přidal nepoužitelný, protože mám asi moc krátkodobou paměť a to kvantum různých symbolů jsem prostě nebyl schopen vstřebat (což je taky případ toho <<*>> - když to použiju jednou za rok, jak si pak budu pamatovat, co to znamená?). Ale slyšel jsem, že v Perlu6 je spousta věcí vymyšlena dobře - jak tam funguje static typing? Zahlédl jsem, že to umí - co to tedy umí?

To není stejné. Hyperoperátor je obecnější verze zippWith, ale narozdíl od zippWith funguje rekurzivně a ve verzi s šipkami dovnitř, kterou jsem použil,
cyklicky opakuje kratší ze sekvencí. V jednostranné variantě se dá použít jako map.

pro můj konkrétní případ použití, kdy je nalevo ploché pole a napravo pole polí, by fungovalo tohle:
Kód: [Vybrat]
hyper = (\f x y -> zipWith (\xx yy -> zipWith f (cycle [xx]) yy) x $ cycle y)

implementovat to obecně nebude jednoduché, protože to musí pracovat s poli typu [1,2,[3,4]].

https://docs.perl6.org/language/operators
na abc vycházel skvělý seriál http://www.abclinuxu.cz/blog/wamba/perl

Mé znalosti přibližně odpovídají rozsahu toho seriálu. O statickém typování nic nevím.

javaman ()

Re:Jak se pozná senior
« Odpověď #258 kdy: 21. 12. 2016, 12:20:38 »
no ty blaho, tady na rootu jsou vetsi blbci nez jsem si myslel :o
+1

Pako

Re:Jak se pozná senior
« Odpověď #259 kdy: 21. 12. 2016, 12:53:10 »
no ty blaho, tady na rootu jsou vetsi blbci nez jsem si myslel :o

No ne žeby celá tahle soutěž o to kdo je větší senior protože umí napsat co nejobskurněji pár řádků v co nejvíce jazycích nebyla poněkud trapná (vč. javamanových reakcí - i on propadl) ovšem teprve jurdo vulgo spasitel je tou pravou pečetí trollů, lopat & nerdovství.


andy

Re:Jak se pozná senior
« Odpověď #260 kdy: 21. 12. 2016, 13:01:47 »
To není stejné. Hyperoperátor je obecnější verze zippWith, ale narozdíl od zippWith funguje rekurzivně a ve verzi s šipkami dovnitř, kterou jsem použil,
cyklicky opakuje kratší ze sekvencí. V jednostranné variantě se dá použít jako map.

pro můj konkrétní případ použití, kdy je nalevo ploché pole a napravo pole polí, by fungovalo tohle:
Kód: [Vybrat]
hyper = (\f x y -> zipWith (\xx yy -> zipWith f (cycle [xx]) yy) x $ cycle y)

implementovat to obecně nebude jednoduché, protože to musí pracovat s poli typu [1,2,[3,4]].
Citace
Hyper operators apply a given operator enclosed by « and » to one or two lists, returning the resulting list. The pointy part of « or » has to point to the shorter list. A list with just one element is fine too. If one of the lists is shorter then the other, the operator will cycle over the shorter list until all elements of the longer list are processed.
Aha, já jsem přehlédl to (1..10,) - to je totéž co "repeat [1..10]"?
Já tomu asi nerozumím.... mě připadá, že <<něco>> == zipWith (něco) (maximálně tak s cyklem ve směru šipek). Akorát, že v perlu (asi???) můžež napsat
Kód: [Vybrat]
3 * (1..10) --> (3,6,9...)
což v haskellu nemůžeš, protože typy. Takže identický kód by vypadal:
Kód: [Vybrat]
-- Definujeme skalární násobení vektoru
(*!) c = map (*c)
-- definujeme hyperoperátor
(<<*!>>) = zipWith (*!)
nasobilka = [1..10] <<*!>> repeat [1..10]
Chápu to správně?

javaman ()

Re:Jak se pozná senior
« Odpověď #261 kdy: 29. 12. 2016, 17:06:11 »
Tohle zlaté vlákno nějak zapadlo :o Celkem nečekaně jsme se k ničemu nedostali a dál se asi budou nabírat lidi podle "seniority", která ale nic neznamená :D Tak to je super! Všem dáme stejně, protože neumíme rozlišit vývojáře od lopat.

Radovan.

Re:Jak se pozná senior
« Odpověď #262 kdy: 29. 12. 2016, 17:13:59 »
Nezapadlo, jen se pořád čeká na tvůj kód. Nebo nezvládneš ani tu násobilku? Ukaž jaký jsi mistr javy :P

javaman ()

Re:Jak se pozná senior
« Odpověď #263 kdy: 29. 12. 2016, 17:19:56 »
Tak já moc nepochopil, jak jednoduchý kód souvisí s čímkoli. To je jako pohovorové testy. Máš na to třeba hodin a ukaž se :D Jenže to nic neukáže. To je lopatí přístup v lopatím světě, kde existují i termíny jako senior pro třicetileté lidi.

Klidně ti ukážu, jaký mistr Javy jsem. Jen nevím jak, aby to i lopata pochopila.

Radovan.

Re:Jak se pozná senior
« Odpověď #264 kdy: 29. 12. 2016, 17:30:44 »
Násobilku pochopí i lopata, předveď jaký jsi mistr.

Jak pravil Linus: "Kecy nic neznamenají. Ukaž kód!"

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Jak se pozná senior
« Odpověď #265 kdy: 29. 12. 2016, 17:31:13 »
Tak já moc nepochopil, jak jednoduchý kód souvisí s čímkoli. To je jako pohovorové testy. Máš na to třeba hodin a ukaž se :D Jenže to nic neukáže. To je lopatí přístup v lopatím světě, kde existují i termíny jako senior pro třicetileté lidi.

Klidně ti ukážu, jaký mistr Javy jsem. Jen nevím jak, aby to i lopata pochopila.
Tak přestaň žvanit a ukaž.

javaman ()

Re:Jak se pozná senior
« Odpověď #266 kdy: 29. 12. 2016, 17:38:29 »
Násobilku pochopí i lopata, předveď jaký jsi mistr.

Jak pravil Linus: "Kecy nic neznamenají. Ukaž kód!"

Právě, proto ji sem všechny daly. Ale asi těžko na tom ukážeš, jestli jsem mistr.

Linus zrovna není někdo, kdo by tomu mohl rozumět.

Tak já moc nepochopil, jak jednoduchý kód souvisí s čímkoli. To je jako pohovorové testy. Máš na to třeba hodin a ukaž se :D Jenže to nic neukáže. To je lopatí přístup v lopatím světě, kde existují i termíny jako senior pro třicetileté lidi.

Klidně ti ukážu, jaký mistr Javy jsem. Jen nevím jak, aby to i lopata pochopila.
Tak přestaň žvanit a ukaž.

Jenže co? Lopaty jsou hloupé a nemají dostatek inteligence na to, aby pochopily víc advanced lidi.

Radovan.

Re:Jak se pozná senior
« Odpověď #267 kdy: 29. 12. 2016, 17:40:18 »
Nemáš na to.

gll

Re:Jak se pozná senior
« Odpověď #268 kdy: 29. 12. 2016, 17:41:20 »
To není stejné. Hyperoperátor je obecnější verze zippWith, ale narozdíl od zippWith funguje rekurzivně a ve verzi s šipkami dovnitř, kterou jsem použil,
cyklicky opakuje kratší ze sekvencí. V jednostranné variantě se dá použít jako map.

pro můj konkrétní případ použití, kdy je nalevo ploché pole a napravo pole polí, by fungovalo tohle:
Kód: [Vybrat]
hyper = (\f x y -> zipWith (\xx yy -> zipWith f (cycle [xx]) yy) x $ cycle y)

implementovat to obecně nebude jednoduché, protože to musí pracovat s poli typu [1,2,[3,4]].
Citace
Hyper operators apply a given operator enclosed by « and » to one or two lists, returning the resulting list. The pointy part of « or » has to point to the shorter list. A list with just one element is fine too. If one of the lists is shorter then the other, the operator will cycle over the shorter list until all elements of the longer list are processed.
Aha, já jsem přehlédl to (1..10,) - to je totéž co "repeat [1..10]"?
Já tomu asi nerozumím.... mě připadá, že <<něco>> == zipWith (něco) (maximálně tak s cyklem ve směru šipek). Akorát, že v perlu (asi???) můžež napsat
Kód: [Vybrat]
3 * (1..10) --> (3,6,9...)
což v haskellu nemůžeš, protože typy. Takže identický kód by vypadal:
Kód: [Vybrat]
-- Definujeme skalární násobení vektoru
(*!) c = map (*c)
-- definujeme hyperoperátor
(<<*!>>) = zipWith (*!)
nasobilka = [1..10] <<*!>> repeat [1..10]
Chápu to správně?

Nechápete to správně. (1..10,) je totéž co [[1..10]].


Ten speciální případ v haskellu jsem mohl zapsat i takto.

Kód: [Vybrat]
hyper = (\f x y -> zipWith (\xx yy -> map (f xx) yy) x $ cycle y)

Neznám haskell tak dobře, abych dokázal implementovat ekvivalent hyperoperátoru obecně. Existuje ve standartní knihovně nějaký standartně používaný typ pro vnořená pole [a,a,[a,a]] a pod. ?


jpu

Re:Jak se pozná senior
« Odpověď #269 kdy: 29. 12. 2016, 17:41:39 »
javamane daj si novorocny zavazok, ze konecne navstivis psychiatra a budes nieco so sebou robit