Naar aanleiding van een korte discussie in de coffee corner maar deze topic aangemaakt.
De Facebook puzzels zijn kleine programmeeruitdagingen die je hier kunt vinden:
http://www.facebook.com/careers/puzzles.php
De bedoeling is om ze te programmeren via thrift, zodat je ze kunt submitten, thrift vind je hier:
http://thrift.apache.org/
Ik snap echter zelf niet hoe het precies werkt met thrift, de tutorials zijn schaars en niet altijd even duidelijk.
Als iemand die het wel gelukt is om via thrift een puzzel op te lossen een korte beschrijving kan maken, dan zou ik, en met mij meerdere denk ik, daar erg dankbaar voor zijn.
Ik heb zelf de eerste (Hoppity) in PHP gebakken, niet veel spannends, zal hem wel posten als voorbeeld, ook al is het een beetje een spoiler. Maar omdat het zo'n simpel voorbeeld is, valt er niet veel te spoilen.
Natuurlijk kan het simpeler met een for-loop van 1 tot n en dan alles van %3, %5 en %15 afvangen, maar dit is sneller voor grotere input.
De Facebook puzzels zijn kleine programmeeruitdagingen die je hier kunt vinden:
http://www.facebook.com/careers/puzzles.php
De bedoeling is om ze te programmeren via thrift, zodat je ze kunt submitten, thrift vind je hier:
http://thrift.apache.org/
Ik snap echter zelf niet hoe het precies werkt met thrift, de tutorials zijn schaars en niet altijd even duidelijk.
Als iemand die het wel gelukt is om via thrift een puzzel op te lossen een korte beschrijving kan maken, dan zou ik, en met mij meerdere denk ik, daar erg dankbaar voor zijn.
Ik heb zelf de eerste (Hoppity) in PHP gebakken, niet veel spannends, zal hem wel posten als voorbeeld, ook al is het een beetje een spoiler. Maar omdat het zo'n simpel voorbeeld is, valt er niet veel te spoilen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| <?php $max = trim(file_get_contents($argv[1])); // De volgorde is altijd hetzelfde: // 3 -5 -6 -9 -10-12-15 // 18-20-21-24-25-27-30 etc.. // Dus: %3, %5, %3, %3, %5, %3, %15 // Maar hoeveel herhalingen hebben we nodig en wat komt er dan op het eind? // Herhalingen is floor(n / 15) // n%15 - Extra termen // 0 - 0 // 1 - 0 // 2 - 0 // 3 - 1 // 4 - 1 // 5 - 2 // 6 - 3 // 7 - 3 // 8 - 3 // 9 - 4 // 10 - 5 // 11 - 5 // 12 - 6 // 13 - 6 // 14 - 6 $hops = array("Hoppity","Hophop","Hoppity","Hoppity","Hophop","Hoppity","Hop"); $terms = array(0,0,0,1,1,2,3,3,3,4,5,5,6,6,6); for($i=0;$i<floor($max/15);$i++) fwrite(STDOUT, implode("\r\n", $hops)."\r\n"); for($i=0;$i<$terms[$max%15];$i++) fwrite(STDOUT, $hops[$i]."\r\n"); ?> |
Natuurlijk kan het simpeler met een for-loop van 1 tot n en dan alles van %3, %5 en %15 afvangen, maar dit is sneller voor grotere input.