Mając dość niezawodności pamięci flash, zdecydowałeś się przechowywać wszystkie swoje programy na jednej ze starych dobrych dyskietek 1440 KiB. Jednak po skopiowaniu nawet 3000 programów dysk był pełny. Jak to w ogóle możliwe? Doświadczony w kodzie golfowym, jak jesteś, większość programów nie ma nawet 100 bajtów długości, więc powinno pozostać dużo miejsca ...
Po zapytaniu o to superużytkownika odkrywasz, że zostałeś skrzywdzony przez rozmiar klastra systemu plików , złą fabułę projektantów FAT12, która pozostawia znaczną część twojej dyskietki nieużywaną i zmusza cię do zakupu więcej, niż faktycznie potrzebujesz.
Kup więcej dyskietek? Nigdy! Rozmiar klastra będzie mniejszy, jeśli po prostu zapiszemy wiele programów w jednym pliku, co jest możliwe, ponieważ różne kompilatory / interpretery będą zachowywać się inaczej dla tego samego kodu źródłowego.
Zadanie
Napisz poliglotę, która mieści się w jednym klastrze (512 bajtów lub mniej) i rozwiązuje jak najwięcej z poniższych zadań.
Przeczytaj wszystkie dane wejściowe i wydrukuj je.
Drukuj Witaj, świecie! .
Przeczytaj wiersz / argument ( nazwę ) jako dane wejściowe i wydrukuj Happy Birthday, [nazwa]! .
Przeczytaj wszystkie dane wejściowe i wydrukuj Uwielbiam zakładki! jeśli zawiera jeden lub więcej tabulatorów (0x09) i nienawidzę spacji! jeśli nie.
Przeczytaj dwa wiersze / argumenty i wypisz prawdziwą wartość, jeśli druga jest podciągiem pierwszej, a fałszem, jeśli nie.
Przeczytaj wiersz / argument i wypisz prawdziwą wartość, jeśli jej znaki są w kolejności rosnącej, a jeśli nie, to wartość fałsz.
Przeczytaj wiersz / argument i znak i wydrukuj indeksy wszystkich wystąpień tego znaku.
Przeczytaj wiersz / argument i wydrukuj dowolny ze znaków o największej liczbie wystąpień.
Przeczytaj dwie liczby całkowite od 0 do 255 i wydrukuj ich sumę.
Przeczytaj jedną liczbę całkowitą od 0 do 255 i wydrukuj iloraz i resztę jego dzielenia przez 7 .
Odczytaj jedną liczbę całkowitą z przedziału od 1 do 255 i wydrukuj prawdziwą wartość, jeśli jest to liczba złożona (ani 1, ani liczba pierwsza) i wartość fałsz, jeśli nie.
Przeczytaj jedną liczbę całkowitą z przedziału od 1 do 255 i wydrukuj prawdziwą wartość, jeśli jest to potęga 2, a wartość fałsz, jeśli nie.
Przeczytaj dwie liczby całkowite od 0 do 255 i wydrukuj większą.
Przeczytaj dziesiętną liczbę całkowitą od 0 do 255, wypisz jej reprezentację szesnastkową.
Odczytaj jedną liczbę całkowitą od 0 do 255 i wydrukuj jej wagę Hamminga (liczba 1-bitów).
Przeczytaj jedną liczbę całkowitą n między 1 a 13 i wydrukuj F n , n- tą liczbę Fibonacciego .
Na przykład dla danych wejściowych
13
wydrukuj233
.
Przeczytaj wiersz / argument wejścia i umieść go w ramce.
Na przykład dla danych wejściowych
Programming Puzzles & Code Golf
wydrukuj to:+---------------------------------+ | Programming Puzzles & Code Golf | +---------------------------------+
Przeczytaj prostokątny blok znaków i obróć go o ćwierć obrotu w prawo.
Na przykład dla danych wejściowych
tye xll epb tma id sa s e i r hsn Tiu
wydrukuj to:
This text is simply unreadable
Przeczytaj liczbę całkowitą od 1 do 40 i wydrukuj diament o tej długości boku.
Na przykład dla danych wejściowych
3
wydrukuj to:/\ / \ / \ \ / \ / \/
Wydrukuj to:
....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ ....@@@@....@@@@....@@@@....@@@@ @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@.... @@@@....@@@@....@@@@....@@@@....
Punktacja
Odpowiedź, która udaje się włączyć największą liczbę programów do jednego pliku, który mieści się w pojedynczym 512-bajtowym klastrze, wygrywa. Więzy są dzielone według liczby bajtów (im niższy, tym lepiej).
Dodatkowe zasady
Dla każdego zadania, o które prosi się o wynik, ten sam plik (bajt na bajt) musi stanowić pełny program - w wybranym języku - który rozwiązuje to konkretne zadanie.
Każde zadanie musi zostać rozwiązane w innym języku.
Języki liczą się jako różne, jeśli nie są różnymi wersjami tego samego języka. Na przykład jest tylko jeden JavaScript, jeden Python i jeden TI-BASIC, ale C, C ++, Octave i MATLAB to cztery różne języki.
Wybrany język dla każdego zadania musi spełniać naszą zwykłą definicję języka programowania .
Ponadto język musi zostać opublikowany i wdrożony przed 9 września 2015 r.
Twój kompilator / tłumacz może nie wymagać żadnych niestandardowych flag, aby uzyskać oczekiwane zachowanie.
Wyjątki od tej reguły obejmują flagi wymagane do określenia konkretnego języka, do odczytania programu z (pojedynczego) pliku lub do wyłączenia banera.
Dane wejściowe dla każdego zadania będą składały się z drukowalnych znaków ASCII (0x20 do 0x7E) i kanałów (0x0A) i nie będą przekraczać 255 bajtów.
Wszystkie liczby całkowite można odczytać w postaci dziesiętnej lub jednostkowej, chyba że w zadaniu podano inaczej.
Zachowanie nieprawidłowych danych wejściowych jest niezdefiniowane.
Możesz odczytać dane wejściowe ze STDIN (lub jego najbliższej alternatywy) lub jako argumenty wiersza poleceń.
Jeśli zadanie wymaga odczytania dwóch elementów danych wejściowych, możesz je odczytać - w dowolnej kolejności - oddzielone jednym bajtowym ogranicznikiem według własnego wyboru, jako osobne argumenty wiersza poleceń lub jeden z STDIN, a drugi jako argument wiersza polecenia.
Jeśli jednym z elementów wejściowych jest linia, jedynym możliwym ogranicznikiem jest linia.
Wydrukuj wyjście do STDOUT (lub najbliższej alternatywy). Wszystkie dane wyjściowe do STDERR zostaną zignorowane.
Do każdego zadania obowiązują standardowe zasady gry w golfa .
W szczególności dotyczy to luk, które są domyślnie zabronione , z wyjątkiem twardego kodowania danych wyjściowych , co jest wyraźnie dozwolone w przypadku tego wyzwania.
2>/dev/null
i uzyskujemy prawidłowe wyjście na standardowe wyjście, to jest w porządku? Tak dla pewności.