Pamiętaj, że to nie to samo, co Wydrukuj alfabet cztery razy .
To zadanie polega na napisaniu programu do generowania czterech kopii każdej litery alfabetu angielskiego, po jednej literze na wiersz, na standardowym wyjściu:
A
A
A
A
B
B
B
B
itp.
Wynik powinien zawierać znaki nowej linii po każdej literze.
Preferowane są wielkie litery bez dodatkowego wyjścia; jednak małe litery i / lub dodatkowe białe znaki są dopuszczalne, jeśli wielkie litery / striping wydłużyłyby twoje rozwiązanie.
Zredagowano, aby dodać : Rozwiązanie musi być wystarczająco kompletne, aby wykonać. Powinienem móc wywołać implementację języka, wkleić kod z odpowiedzi i uzyskać wyniki bez wpisywania dodatkowego kodu.
Powyższe pytanie kompletności pojawiło się w kontekście rozwiązania C. Czy na pewno musi istnieć stała zasada lub konwencja na stronie gry w golfa? Jeśli tak, chętnie skorzystam z wytycznych społeczności. Ale to jest moje zdanie:
W szczególności w odniesieniu do C musisz uwzględnić (i policzyć)
main(){
...}
wokół kodu, ponieważ inaczej nie skompiluje się. Ostrzeżenia, ponieważ nie ma nic#include <stdio.h>
złego, dopóki kod się kompiluje. Ogólnie rzecz biorąc, skompilowany język wymaga kompilowalnej jednostki.Nagie wyrażenie dające pożądane wyniki jest dopuszczalne, jeśli istnieje sposób bezpośredniego wykonania wyrażenia; na przykład, jeśli język ma REPL. Możesz więc przesłać Haskell
main=
tak długo, jak faktycznie działa tak, jak napisano np. Wghci
monicie. Ponieważ jednak oznaczalet
to, że będziesz składać deklaracje, trzymanie się tegorunhaskell
formatu może być wygraną netto .Podobnie
awk
skrypty powinny znajdować się w blokachBEGIN
(lubEND
przy założeniu, że stdin jest dołączony/dev/null
), ponieważ nie przetwarzamy żadnych danych wejściowych.
itp.
źródło
Odpowiedzi:
APL (5)
Format macierzowy (
⍪
) 4-replikacji (4/
) alfabetu (⎕A
).źródło
Python - 37
i
zmienia się od 0 do 104; jest dzielony przez cztery i dodawany do wartości ascii dlaA
, a wynikowy znak jest drukowany.źródło
3/4
wynosi 0, podczas gdy3.0/4.0
wynosi 0,75;range()
generuje liczby całkowite.for i in range(104):print(chr(i//4+65))
R,
302827Poprzednia wersja z 30 bajtami:
źródło
1
zamiast,""
aby określić również stdoutwrite
, co oszczędza kolejny bajt.C, 59
Podaję tę, niekonkurencyjnie długą odpowiedź, po prostu dlatego, że nie widzę jeszcze zgłoszenia C. I to mnie smuci. : - /
PÓŹNIEJ: Wspiera @moala za wykonanie int wersji „/ 4”, oszczędzając 13 znaków!
źródło
J:
1813Nadal jestem dość niepewny z J, więc prawdopodobnie można to poprawić
źródło
#
) zamiast podziału tak:4#u:65+i.26 1
. Ponadto~
zamienia argumenty funkcji, więc jeśli kiedykolwiek będziesz to robił(expression) F value
, możesz zastąpićvalue F~ expression
to znakiem, aby zapisać znak.4#65{26,.\a.
dla 12 bajtów.Ruby, 23 lata
Podziękowania dla @manatwork - głosujcie na jego komentarz, a nie na to. :)
źródło
puts [*?A..?Z].map{|i|[i]*4}
lubputs ([*?A..?Z]*4).sort
, żeby litery były uporządkowane jak w przykładzie.puts (?A..?Z).map{|i|[i]*4}
jest postacią krótszą. Możesz zadzwonićmap
bezpośrednio na Range, więc w tym przypadku nie potrzebujesz ikony.PowerShell:
3223Kod do gry w golfa:
Przewodnik:
[char[]](
...)
pobiera tablicę obiektów i konwertuje je na znaki ASCII.65..90
to kody ASCII dla AZ.*4
powtarza serię 4 razy.|Sort
sortuje dane wyjściowe.Uwaga:
Jeśli chcesz to zapisać do pliku, po prostu rzuć
>
, a następnie nazwę pliku na końcu.źródło
Haskell, 46
źródło
putStr$['A'..'Z']>>=("golf">>).(:"\n")
zapisuje 8 bitówBefunge 98-18
Działa poprzez zapisywanie liczby i kończenie jej, gdy osiągnie 104. Drukuje odpowiedni znak alfabetu dla liczby podzielonej przez 4, a następnie nowej linii. Ale jeśli nie muszę dodawać nowego wiersza po każdej literze, to jest 16 znaków:
Można zmniejszyć, jeśli mogę wydrukować więcej znaków (tj. Wszystkie cztery razy) (
76 znaków, nawet działa w Befunge 93):Z nową linią:
źródło
GolfScript:
1715 znakówźródło
Perl 5, 21
źródło
C,
46444346:44:44 też:
Dzięki @marinus, 43:
Czy powinienem dodać nagrodę za dotarcie do 42? :)
źródło
>>2
przez/4
.Java: 56
edycja: zmieniono z „print” na „println”
źródło
The solution must be complete enough to execute. I should be able to invoke an implementation of the language, paste the code from the answer, and get results, without typing any additional code.
myślę, że twoje rozwiązanie narusza ten warunekCzwarty, 37
źródło
+
.Właściwie 6 bajtów
Wypróbuj tutaj!
Wyjaśnienie
4 bajty małymi literami i bez nowej linii:
źródło
16-bitowy kod maszynowy x86 MS-DOS COM, 25 bajtów
W hex:
Jest to kompletny program MS-DOS .COM. Skopiuj sekwencję bajtów do pliku z rozszerzeniem .com i uruchom ją z DOSBox
Demontaż:
źródło
BrainF * ,
7960źródło
+++++++++++++[>+>+++++>++<<<-]>--->>[<.<.>.<.>.<.>.<.>+>-]
AWK, 48
Spróbujmy z AWK ...
Jak sugeruje manatwork , możemy pozbyć się 2 znaków
AWK, 46 (Edytuj)
AWK, 40 (edycja kodu MarkReeda )
źródło
END{for(i=104;i--;s+=0==i%4)printf"%c\n",s+65}
.END
bloku oznacza, że wymaga on strumienia wejściowego (nawet jeśli jest/dev/null
) do działania. Czy to zmienia liczbę znaków? W każdym razieBEGIN{for(;++i<104;){printf"%c\n",i/4+65}}
jest o 5 znaków krótszy.END
wymóg wzorca dla strumienia wejściowego ...PowerShell, 21
Nieco inne podejście do Isziego. I krócej :-)
źródło
C # LINQ
115 bajtów110 bajtówźródło
05AB1E, 6 bajtów
Wyjaśnienie:
Bez nowego wiersza 4 bajty
Wypróbuj online!
źródło
Galaretka , 5 bajtów (niekonkuruje?)
Wypróbuj online!
Wyjaśnienie:
źródło
Perl 6, 32
źródło
Płótno , 5 bajtów
Wypróbuj tutaj!
Wyjaśnienie:Z
¶
zastąpiony\n
przy drukowaniu.źródło
Kotlin ,
6659 bajtówZaoszczędź 7 bajtów usuwając pętlę.
Wypróbuj online!
źródło
pieprzenie mózgu , 48 bajtów
Wypróbuj online!
Drukuje małymi literami, oddzielone znakami powrotu karetki. Używa owijania 8-bitowych komórek, a także komórek pozostawionych od początku, chociaż możesz dodać a,
>
aby przeciwdziałać temu ostatniemu.źródło
Bash: 24 znaki
źródło
Dc: 35 znaków
źródło
Scala, 42
źródło
Julia,
39, 36źródło