Wprowadzenie
Złe wieści - masz szlaban. Twój nauczyciel języka angielskiego nie rozumie tej witryny i chce, abyś „przestał robić matematykę cyfrowym psom, to jest lekcja angielskiego!”
Skazała cię 25 razy na napisanie swojego ulubionego powiedzenia na tablicy, co da w sumie 100 wierszy na tablicy.
The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
Na szczęście jesteś zapalonym czytelnikiem (nie wspominając o ekspertach w dziedzinie kodowania)! Przeczytałeś o sztuczce, która może być dla ciebie łatwa.
(Foxtrot autor: Bill Amend)
Niestety dla Jasona nie wyszło. Ale masz lepszy pomysł! Ponieważ twój nauczyciel języka angielskiego myśli, że robisz matematykę, jeśli porzucisz wszystkie liczby w swoim programie, może to po prostu zadziałać! Chcesz także, aby Twój program był jak najkrótszy, ponieważ jesteś leniwym studentem i nie chcesz dużo pisać na tablicy.
Napisz program zgodny z następującymi zasadami:
- Twój program musi wydrukować 4 powyższe wiersze 25 razy. Wiersze muszą być wyprowadzane w tej kolejności, powtarzając się. Łącznie dokładnie 100 wierszy wyniku (końcowy znak nowej linii na samym końcu lub wiodący nowy wiersz na samym początku jest w porządku).
- Nie możesz używać znaków
0123456789
. Twój nauczyciel wpada w zakłopotanie matematyką i zawoła cię! - Możesz użyć dowolnego importu i bibliotek zewnętrznych bez liczenia importów. Twój nauczyciel języka angielskiego nie wie o programowaniu. Jason mógł zaoszczędzić dużo pracy, nie pisząc,
#include <stdio.h>
a ty nie chcesz popełniać tych samych błędów! - Oceń swój program według
byte
liczby. Najniższy wynik wygrywa!
Odpowiedzi:
CJam,
109107106104103 bajtówPowyżej jest odwracalny zrzut xxd.
Testowanie
Możesz wygenerować i wykonać powyższy kod, uruchamiając go w tłumaczu online :
Aby zobaczyć wygenerowany kod (bez jego wykonania), usuń końcowy
~
.Aby policzyć liczbę bajtów (jeden znak to jeden bajt w ISO-8859-1), zamień ostatni na
~
a,
.Wersja do wydruku (122 bajty)
Po wypchnięciu ciągu (S) następuje wykonanie następującego:
Moar golf
Po wypchnięciu niedrukowalnego ciągu (U) wykonuje się następujące czynności:
Spycha to ciąg wersji do wydruku. Reszta kodu działa jak poprzednio.
źródło
~
w,
celu sprawdzenia.]:+~
sprawiło, że działało. Dlaczego po prostu nie dodasz tego do swojego kodu?JavaScript (ES6) 164
Testuj w konsoli FireFox / FireBug.
źródło
Python:
188 173 160153Nie pytam dużo, ale wydaje mi się to dość krótkie.
Edycja: Więc się myliłem, wcale nie było krótko! Dzięki za pomoc w komentarzach: D
źródło
\
z\n
powodu ucieczki ...b
naprint
:%
ma wyższy priorytet niż*
.CJam,
151 140 135 132 130128 bajtów (tweetowanie)Wypróbuj tutaj
Jestem w stanie skrócić to do 110 bajtów, konwertując to na Unicode, ale ponieważ nie jest to lepsze niż inne rozwiązanie Unicode, wolałbym tego nie mówić :)
źródło
:D
tam robi ten emotikon ?! Czy piszesz do znajomych podczas zatrzymania? Idź do biura dyrektora!T
alias do.\nThe
, a następnie usunąć dodatkową linię, która to tworzy od początku ciągu wyjściowego (mój cjam-fu nie jest wystarczająco dobry, aby dowiedzieć się, czy możesz to łatwo zrobić)PHP, 0 bajtów
Aby uruchomić ten kod, musisz zaimportować bibliotekę o następującej nazwie
data://text/plain,<?php...classroom.\n";
:I musisz mieć
allow_url_include
włączone w swoimphp.ini
.Koniec z liczbami i rozszerzeniami dzięki Dennisowi.
źródło
require_once "data://text/plain,The eighteen-hundreds...";
, który nie wymaga sh , nie używa liczb i nadal ma 0 bajtów.Rubin,
185180176 bajtówEDYCJA: Interpolacja ciągów, dzięki @britishtea
To mój pierwszy golf w historii i nie jestem wielkim Rubistą (ale z pewnością kocham Ruby). W każdym razie to jest to (skrócone, sugestia Doorknob).
źródło
s.split.size.next
zapisuje 5 znaków (nie musisz określać miejsca do podziału).(s.split.size+1).times
byłby o 1 bajt krótszy?Java
249231230222Moja pierwsza odpowiedź! Może zaczniesz używać języka, który znam tak dobrze.
Bez golfa
źródło
public
i skrócićargs
do jednej postaci. Możesz to zrobića++<':'
zamiast zwiększać go osobno. Ponieważ OP nie liczy importów, możesz zaoszczędzić nieco więcejimport static java.lang.System.*;
, więc nie musisz pisaćSystem.
później (tam, gdzie się liczy). W ten sposób udało mi się uzyskać około 230. Jeśli jeszcze tego nie zrobiłeś, możesz zajrzeć na stronę porad Java .C 171
Najpierw wypróbowałem uproszczoną wersję (189 bajtów), która była lepsza niż inne rozwiązanie C ...
które później trochę zoptymalizowałem ...
źródło
char *
.a
przypuszczalnie dlatego, że domyślnieint
przyjmujechar
wartość , która może zaakceptować wartość. Nie podobab
mi się, chyba że tak to nazywamchar[]
. VX, jakiego kompilatora używasz?b
jestint
również, ale utrzymuje wskaźnik do literału łańcucha. W GCC jest całkowicie w porządku (mam na moim komputerze 4.8.2).for(a='a';++a<'z';)
JavaScript, ES6,
174 172154 bajtówKorzystanie ze
replace
sztuczki @ edc65 . Dzięki!Działa tylko w najnowszym Firefoksie (34 i nowszym) ze względu na użycie ciągów szablonów.
źródło
BrainFuck ( 1597 znaków )
Jeśli ktoś jest zainteresowany, nadal można grać w golfa.
Możesz to przetestować i potwierdzić, że daje prawidłowy wynik, spełniając wszystkie reguły.
źródło
Perl - 145
Cieszę się, że widzę tak wiele odpowiedzi! Oto rozwiązanie Perla.
źródło
Skoro tak bardzo nienawidzi matematyki, dlaczego nie Mathematica (177)
źródło
JavaScript ES6,
198193 bajtówTwój nauczyciel nie chce żadnych liczb, ale ponieważ jest nauczycielem angielskiego, nie ma pojęcia, co
Math.floor(Math.exp(Math.PI)+Math.E)
to znaczy.Bardziej czytelnie:
Musi być uruchomiony w najnowszym firefoxie
źródło
with(Math)alert("long string here".repeat(exp(PI)+E|[]))
(q='aaaaa'.length)*q
"\x18".charCodeAt()
:! (zaszyfruj strzałkę w górę, a zaoszczędzisz tonę!)JavaScript -
178 bajtów176 bajtówMój pierwszy golf, pomyślałem, że dam mu szansę z lekko kręcącymi się operatorami, nie wyszedł tak dobrze, jak się spodziewałem, ale no cóż!
Ponieważ jestem już w areszcie i oczywiście mam problemy z zachowaniem się ... JavaScript - 71 bajtów
Ten prawdopodobnie wpędzi mnie w jeszcze większe kłopoty, ale jeśli już znalazłem się w areszcie, A ORAZ planuję oszukać moje aresztowanie, najwyraźniej brakuje mi dobrego osądu, jak powinienem się zachowywać w klasie. Może jeśli uda mi się pociągnąć jednego na nauczyciela, mogę pociągnąć jednego na wszystkich innych golfistach.
Szybki! Użytkownicy Chrome / IE 11 / Firebug, otwórz swoje konsole RAZ TERAZ i spróbuj.
(Proszę, nie rań mnie zbytnio, myślałem, że to było śmieszne)
źródło
C # -
229216 bajtówBezpłatne
using
FTW!Alternatywnie, ta sama liczba bajtów (
using
choć więcej nadużyć)źródło
a
':'-'!'
== 25), co jest krótsze niża.Length
i pozwoli na uwzględnienie, jak sugerujesz. (Alternatywnie, rób, jak wydają się inne odpowiedzi, i po prostu zapętlaj między,!
i:
zabawne, jak wszyscy wybraliśmy te same znaki)Befunge-93,
268260256 (rozmiar siatki: 72x6 = 432)To jest mój pierwszy raz w golfa, więc pomyślałem, że spróbuję języka, który nie został jeszcze zrobiony dla tego problemu, ponieważ nie dodałbym nic innego. Ponieważ jest kompatybilny z Befunge-93 (mieści się w siatce 80x25 i używa tylko instrukcji Befunge-93), powinien również działać w Befunge-98. Na wszelki wypadek uniknąłem też, aby wskaźnik przesuwał się nad znakami innymi niż spacja. Nie mogłem sobie przypomnieć, czy specyfikacja faktycznie zdefiniowała te znaki jako brak operacji, i nie będę mieć nosowych demonów w MOIM kodzie.
Naprawdę nie możesz ungolfować kodu Befunge. Kluczową rzeczą do odnotowania tutaj jest to, że Befunge wypycha znaki na stos jako ich wartości ASCII, co czyni relatywnie łatwym odwoływanie się do liczb bez dosłownego odwoływania się do nich. The
"K"
W lewym górnym rogu jest 75, odnosząc się do liczby powtórzeń razy liczba „the” klauzul na powtórzenie; Używam modułu i innej sztuczności na (kopiach) tego numeru, aby określić, którą ścieżkę przejść przez druk na każdym odejściu.::-
jest ładnym idiomem dla zera, przydatnym dla ciągów kończących zero; Używam go tutaj dwa razy.Czasami wskaźnik musi przejść przez miejsce, w którym definiuję ciąg, stąd określone wybory znaków używane do uzyskania określonych liczb w niektórych punktach.
Zaletą wielu interpreterów Befunge jest to, że możesz obserwować strzałkę wskaźnika wokół siatki, a także zobaczyć, jakie wartości są na stosie. W ten sposób możesz przejść mniej więcej samemu i zobaczyć, jak program działa! Polecam użycie http://befungius.aurlien.net/, jeśli nie masz własnego preferowanego tłumacza Befunge.
Można to prawdopodobnie nieco zmniejszyć (lub dużo) więcej. Proszę o informację zwrotną! Jeśli muszę podać lepsze wyjaśnienie, daj mi znać; Jestem w tym nowy.
Edycja - wygoliłem kilka bajtów, pozbywając się niepotrzebnego przekierowania do ostatniego wiersza po zakończeniu programu (po prostu wpisując miejsce, w
@
którym^
kiedyś był).Kolejna edycja - wygoliłem więcej bajtów w różnych miejscach, głównie z oszustwem. (Dodano również rozmiar siatki, co wydaje się być trendem z odpowiedziami Befunge.)
źródło
re a time
gdzieś zapisał?#
jednego końca linii do pominięcia postać na drugim końcu (w na przykład CCBI , po#
prostu pomija nieskończoną przestrzeń między nią a postacią na drugim końcu), co psuje ten program. Mając to na uwadze, nie zadałem sobie trudu, aby wrócić i naprawić to zgłoszenie.1
cyfr, które są niedozwolonePyth 135
136 140Zwróć uwagę na spację końcową.
Używa prawie tej samej sztuczki, co @Geobits i jego przyjaciele komentujący w odpowiedzi na Pythona, aby skonstruować ciąg. Teraz używa również niektórych z tej odpowiedzi .
Wykorzystuje to wbudowaną zmienną
G
, która zawieraabcdefghijklmnopqrstuvwxyz
i dostaje jeden mniej niż jego długość, aby wygenerować 25 wyników.źródło
Rubin -
152141http://repl.it/2Om/6
źródło
String#*
do powtórzenia linii 25 razy zamiastInteger#times
.puts"hi"
jest legalny).Python, 165 bajtów
Okazało się naprawdę ładnie, że długość h wynosi 25, co nie było zamierzone. =)
źródło
Python 2 - 143
Głupia odpowiedź:
Zauważ, że pełna liczba to 162. Pominąłem wszystkie
from this import i
.Używa podobnych zamienników do mojej strategii pyth, ale nie mogłem się powstrzymać od opublikowania tego po odkryciu przezabawności importowania z tego :)
źródło
from this import i
! Skąd o tym wiesz?import this
. Potem pomyślałem: „Co jeszcze może być wthis
module?” Więc zadzwoniłemdir(this)
. Lo i oto, wraz ze słownikiem, zniekształconym łańcuchem i"!"
zmienną, była stała liczbowa ... równa 25.PHP (
175157156 bajtów; 152 z uniksowym EOF):Nie jest to najbardziej golfowe rozwiązanie, ale z pewnością spełnia swoje zadanie i jest mniejsze niż niektóre próby.
Oto kod:
Stara wersja:
Działa to, ponieważ php cyklizuje znaki, a my po prostu sprawdzamy, czy tak nie jest
z
i zatrzymujemy się.(Jedną z ciekawostek jest to, że kiedy php sięga
z
, to idzie doaa
.)źródło
Python 2 - 155
Uwaga: ponieważ znaki kontrolne nie są wyświetlane w SE, zastąpiłem je
\x19
.Wersja podstawowa 64:
źródło
from string import *
lub jakkolwiek jest on wywoływany w Pythonie[]
nawiasy kwadratowe w pierwszym wierszu, który domyślnie tworzy krotkę, a następnie ją rozpakowuje.ord('d')//len('aaaa') to before the string so you don't have to bracket it.
LiveScript - 181
Wymagany import:
Jeśli chcesz uruchomić go pod node.js, zainstaluj
LiveScript
( nielivescript
) orazprelude-ls
pakiety z KMP, wymienićalert
zconsole.log
i biegaćlsc prog.ls
, gdzieprog.ls
zawiera program.źródło
0123456789
”T-SQL: 206
Wykorzystuje połączenie krzyżowe w pięciu rzędach, aby wygenerować 25 wierszy, wybierając frazę. Podziały linii są ważne dla wyniku.
źródło
Bash, 151 bajtów
Prawie prosty port twojej odpowiedzi
źródło
C, 196 znaków
To nie jest łatwe zadanie dla dobrego starego 'C. Wyodrębnienie wzoru „% steen-setki ...” oszczędza mi cały dwie postacie.
Białe znaki dla przejrzystości, nie uwzględniają.
źródło
Ruby, 145
Wyjaśnienie
String#upto
do drukowania linii 25 razy. Zakres"K".."c"
wynosi 25 znaków.źródło
#{a="The "}
kosztuje cię więcej postaci!#{a}
ma taką samą długość jakThe
Rakieta 173
Nie golfowany:
źródło
C,
215203199 bajtówBez golfa
Użyłem przesunięcia bitowego do iteracji bez żadnej liczby.
a<<='\xC'+'\xD'
ustawia na 0b1 [25 zer]a>>=!!a
przesuwa się o jeden bit za każdym razem, gdy powtarzamy pętlęEdycja:
a
równa się argc, więc jego wartość wynosi już 1, gdy program jest uruchamiany bez argumentów. Zmienionoa>>='\xB'-'\xA'
naa>>=!!'\xA'
4 bajty krótsze. Również tekst był wyświetlany tylko 24 razy. Naprawione. Usunięto dodatkowe nawiasy klamrowe wwhile
.Edycja 2: zmieniono
!!'\xA'
na!!a
. Wydaje się działać i oszczędza 4 bajtyźródło
puts
aby zapisać więcej bajtów.Rant, 191 bajtów
Nie najkrótsze rozwiązanie, ale wciąż fajne. Napisałem podprogram do napisania pierwszych trzech wierszy i zaprojektowałem go tak, że wywołanie go pustym argumentem zwróciło łańcuch o długości 25 znaków. Następnie przekazuję jego długość do repeatera.
Nie golfowany:
Wypróbuj online
źródło