W jak najmniejszej liczbie znaków Unicode, wydrukuj następujące (144 znaki):
1, 2, 3 o'clock, 4 o'clock rock,
5, 6, 7 o'clock, 8 o'clock rock,
9, 10, 11 o'clock, 12 o'clock rock,
We're gonna rock around the clock tonight.
Nie wolno używać żadnych cyfr w kodzie, z wyjątkiem cyfry 1
.
11
. Czy instrukcja oznacza, że możesz używać tylko cyfry 1 lub cyfry 1?1
. Nie określiłem ile razy, więc fakt, że ludzie używali,11
jest sprytną luką i jestem za tym.Odpowiedzi:
JavaScript -
140132Fakt, że 11 składa się z dwóch 1, pozwala mi przejść zasady, jak sądzę.
Wyjaśnienie
K +++ s jest równe (k ++) + s, więc najpierw dodaje k do x, następnie zwiększa k, a następnie dodaje s do x. Ten proces zostanie wykonany trzy razy, zanim doda ostatnie zdanie.
źródło
k+++s
zrobić? Czy to(k++) + s
czyk + (++s)
czy(k++) + (++s)
?x+=k+++s+k+++s+k+++t+s+k+++t+u
alert
jest on krótszy niżconsole.log
. Korzystanie z automatycznego wyświetlania ostatnich obliczeń w konsoli jest jak oszustwo.C # - 186
Najlepszy język golfa czy najlepszy język golfa?
źródło
i++ +
bitachWriteLine
->Write
i używając literału\n
na końcu łańcucha.Brainfuck (1574)
Nie jest to poważne zgłoszenie, ale zgodne z zasadami.
Można przetestować tutaj .
źródło
#RESPECT
Ruby, 100
źródło
s="%i, %i#{", %i o'clock"*-~1} rock,\n"
(zamień na\n
dosłowny podział wiersza). Świetny pomysł do użycia$$
!r=-~1
wbudowany, możesz go użyć"..."*-~r
zamiasts+s+s
, co pozwala upuścić przypisanie dos
.Perl 123
Wyrażenie regularne pasuje
(
,)
i*
. Wykorzystałem fakt, że kod ASCII(
to 40,)
to 41 i*
42.r
Flaga wyrażenia regularnego umożliwia „w miejsce podstawienia” ie
flaga umożliwia ocenę kodu (podobnie jakx.replace(/.../, function(m){...})
w JavaScript).(clock,rock)
to tablica dwóch „nagich słów”.$&
jest bieżącym dopasowaniem wyrażenia regularnego iord$&
jest wartością ASCII.Zamaskowane przez 3 lub
1+1+1
wartości ASCII wynoszą teraz 0, 1 i 2, więc mogę ich użyć do pobrania odpowiedniego elementu tablicy. Ponieważ 2 jest poza układem, operator „zwarcia”||
ocenia++$i
. W pierwszym meczu$i
jestundef
więc zwiększając go dostać 1, potem 2 i tak dalej ...W prostych słowach. To zastępuje
*
się obecnym występowaniem,(
„zegarem” i)
„kamieniem”.źródło
Bash + coreutils, 120 ASCII, 92 Unicode
ASCII:
Unicode:
wersja Unicode zakodowana w base64 (na wypadek pomyłki w renderowaniu Unicode):
źródło
eval
zamiast potokowania dobash
lubsh
?$r
s!Brainfuck, 1299
Bleuuuurgh . To było okropne. Nie wiem, dlaczego to zrobiłem, na początku wydawało się to dość łatwe. Pierwszy i prawdopodobnie ostatni skrypt Brainfuck. Wypróbuj tutaj.
Z pomocą automatycznego generatora kodów mogłem napisać skrypt, który ponownie wykorzystał większość znaków, zamiast generować je od zera. Jest tylko 275 znaków krótszy niż automatycznie generowany, opublikowany tutaj .
Wyjście nie jest zakończone znakiem nowej linii.
Później mógłbym wyjaśnić. Zasadniczo, każda długa linia, która nie jest czymś
>>>>>>>
lub<<<<<<<
lub>>.>>.>>.>>.
generuje postać lub serii z nich.źródło
Lua -
217164154151149 149143Zmodyfikowano stary, aby zamiast tego używał pętli, oszczędzając ładunek znaków. Dziękuję TeunPronk za pomoc w goleniu kolejnych 10 znaków, a WilliamBarbosa za golenie kolejnych 3 postaci. Za pomocą zmiennej można zapisać 2 kolejne znaki
k
. 6 kolejnych znaków jest zapisywanych przez wyeliminowanie zmiennej,r=" rock,"
ponieważ jest ona używana raz.Nie golfowany,
źródło
j
ik
.O
, wyjąćO
zR
umieść spacjęR
i zastąpićR
przezO,R
wio.write
:)io.write
w zmiennej (f=io.write
) i jeszcze bardziej ją zmniejszaćCJam - 90 Unicode ASCII / 54
ASCII:
Unicode:
Wypróbuj je na http://cjam.aditsu.net/
źródło
Python (123)
PYG (112)
źródło
Brainfuck - 680
przetestuj tutaj: ideone.com/Wi9ftB
tak jak obiecałem, oto lepsza wersja. mój mózg czuje się jak ... och, stąd pochodzi nazwa.
wyjaśnienie: (ponieważ jest nie do utrzymania i nie chcę zapomnieć, jak to działa)
po pierwsze musisz wybrać najlepszy układ danych dla tego wyzwania. wymyśliłem
-4 outmost loop -3 newline char -2 space -1 numbers 1 lowercase #1 2 lowercase #2 3 comma, apostrophe, period 4 condition (outmost loop < 3) 5 inner loop 6 second inner loop
Musimy wierzyć, że jest to optymalne, chyba że będzie zbyt wiele zmian (w takim przypadku musisz zmienić układ)
Następnie użyłem pętli 4x9x3, aby ustawić wartości początkowe dla nowej linii, liczby, dwóch małych liter i przecinka. (wszystkie mniejsze kody ascii otrzymały 4x9 = 36, a dwie małe litery - 4x9x3 = 108, a następnie dodałem i odjąłem niektóre, aby uzyskać ich prawdziwą wartość)
Po zakończeniu ustawienia wstępnego kod wchodzi w skrajną pętlę, która wykonuje cykl 3 razy. Tłumaczę to pseudokodem.
Po zakończeniu tej sekcji muszę po prostu wydrukować ostatni wiersz. Ale mamy wielką literę W, która musi być wyprodukowana bez użycia zbyt wielu znaków. W tym momencie jesteśmy tutaj:
więc wstawiam [-3] 4 razy na [-1] i odejmuję 3, aby uzyskać 87 (W):
>[>>++++<<-]>>---.
następnie go usuwam
[-]
i przesuwam [-2] do tej lokalizacji [-1], aby spacja była blisko małych liter.
<[>+<-]
Następnie drukuje tylko litery. mała litera # 1 dotyczy dolnej części 97-107, a mała litera # 2 dotyczy powyższego regionu.
źródło
JavaScript,
111107 znaków, bez użycia żadnej liczby.Wykonaj następujące fragmenty w konsoli JS przeglądarki:
107 (zainspirowany http://xem.github.io/obfuscatweet/ plus inna odpowiedź JS):
111 (wystarczy spakować cały ciąg i usunąć eval):
źródło
C - 145 - wypróbuj mnie
C - 172 - wypróbuj mnie
źródło
#include <stdio.h>
tego używaćprintf
?main(){...
PHP - 125
129Wersja 1 (129)
Wersja 2 (125)
Czysta wersja:
źródło
Perl,
114111110108110:
111:
114:
źródło
C ++
261203Zredagowałem moją pierwszą próbę; zadziałało, kiedy pierwszy raz go przetestowałem, ale wydaje się, że to fuks; post-inkrementacja w strumieniu jest „niezdefiniowanym zachowaniem” i działało dziwnie (w tym niebieski ekran Windows 7!), kiedy próbowałem go ponownie uruchomić. Myślę, że użycie printf zamiast std :: cout może być użyte z post-incrementem, aby uzyskać krótszy program.
Ponownie zredagowano, przywrócono do 231, ponownie implementując pętlę. Edytowane ponownie, teraz do 203 ... te # definicje nie były przydatne w wersji z zapętleniem.
Dla tych, którzy zastanawiają się, w jaki sposób C ++ może uruchomić funkcję „m”, punkt wejścia można zdefiniować jako dowolną funkcję z opcją kompilatora, podobnie jak ustawienie wszystkich funkcji na stdcall; Użyłem obu przełączników podczas kompilacji powyższego. Jeśli nie podoba ci się ponownie zdefiniowany punkt wejścia, dodaj 3 do mojej liczby postaci.
źródło
m()
. Możesz jednak upuścićvoid
i zapisać 5 znaków (lub 2, jeślimain
Swift -
136134źródło
Java, 228
Zakodowane rozwiązanie byłoby prawdopodobnie krótsze.
źródło
1+1+1
jest o 9 znaków krótszy niż"two".length()"
. I jestString[] a
konieczne?Befunge-98 (
402268)Teraz nieokreślony!
źródło
,,:,1+
,a11+/a*b1111+++-+w:,
, znaków bezpańskie pod główną linię kodu ... typowy befunge. Większość internetowych tłumaczy ma problemy z długością linii (to znacznie ponad limit), czy znasz takiego, który nie ma nic przeciwko?Groovy -
140139 znakówGra w golfa pod wpływem odpowiedzi Williama Barbosy :
Nie golfowany:
źródło
Mathematica - 153
źródło
C ++ 252
źródło
P(", ")
zamiastQ
ratuje cię 2 postaci.N
iR
pojawiają się tylko raz: lepiej byłoby wstawić je niż zrobić makro.#include<iostream> #define P std::cout<<++i<< #define C" o'clock" #define F P", ";P", ";P C<<", ";P C<<" rock"<<std::endl; int i;main(){F F F std::cout<<"We're gonna rock around the clock tonight.";}
Java (v2) -
250241232 znakówJest to kompletny program działający pod wpływem odpowiedzi Williama Barbosy .
Gra w golfa:
Nie golfowany:
źródło
ECMAScript6 -
136135Nie używa nawet dozwolonej
1
cyfry:Testowany w konsoli Firefox.
źródło
PowerShell,
123118109Po okropnym początku (167) pozbyłem się kilku idiomów, których nawet nie potrzebowałem, a przynajmniej skróciłem je do referencji.
źródło
Haskell -
138137 znakówJako samodzielny program:
Edycja: Kiedyś miałem funkcję pomocnika do definiowania s przez
ale okazuje się, że kosztuje 1 dodatkową postać. Czy jest jakiś sposób na skompresowanie wszystkich „o'clock” s / „rock” s / „ock”?
źródło
JavaScript, 140
Wykonuję ciąg typu „x, x, x godzina x godzina rock, \ n ...” Następnie zastępuję „x” cyframi.
źródło
PHP 150
Żadnych liczb, w tym 11, które nie byłyby dwoma zlepionymi jednościami, ale wartość jedenastki.
źródło
PowerShell,
156140136129127Nie golfowany:
źródło
$i++,$i++,"$(($i++)) o'clock","$(($i++)) o'clock rock,"-join', '
w pętli.Kobra - 193
źródło