Napisz program lub funkcję, która pobiera nieujemną liczbę całkowitą N ze standardowego wejścia lub argumentu funkcji. Musi wydrukować lub zwrócić ciąg pustego kwadratu ASCII-art, którego boki są wykonane za pomocą N kopii liczby N.
Konkretnie:
Jeśli N jest 0
, nie są używane żadne kopie N, więc nie powinno być żadnych danych wyjściowych (lub tylko pojedynczej nowej linii).
Jeśli N jest 1
, wynikiem jest:
1
Jeśli N oznacza 2
:
22
22
Jeśli N oznacza 3
:
333
3 3
333
Jeśli N oznacza 4
:
4444
4 4
4 4
4444
Jeśli N oznacza 5
:
55555
5 5
5 5
5 5
55555
Wzór trwa do 6
końca 9
.
Jeśli N jest 10
, wynikiem jest:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Zauważ, że tak naprawdę nie jest to kwadrat. Ma 10 rzędów wysokości, ale szerokość 20 kolumn, ponieważ 10
ma dwa znaki. To jest zamierzone. Chodzi o to, że każda strona „kwadratu” zawiera N kopii N. Zatem wszystkie dane wejściowe poza nimi 9
będą technicznie prostokątami ASCII.
Na przykład, jeśli N jest 23
, wynikiem jest:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Oto pastebin wymaganych wyjść na 99
, 100
, 111
, i 123
(mogą źle wyglądać w przeglądarce, ale w edytorze tekstu będą wyglądać poprawne). Wyjście dla 1000
jest za duże dla Pastebin, ale miałoby 1000 wierszy i 4000 kolumn. Liczby z 4 lub więcej cyframi muszą działać tak samo jak mniejsze liczby.
Detale:
- N musi być zapisane w zwykłej reprezentacji liczb dziesiętnych, bez
+
znaku lub innych cyfr. - Pusta przestrzeń musi być wypełniona tylko spacjami.
- Żadne linie nie powinny mieć spacji wiodących ani końcowych.
- Opcjonalnie dozwolona jest pojedyncza nowa linia po ostatniej linii kwadratów.
- Języki napisane po tym konkursie są mile widziane, po prostu nie są w stanie wygrać .
- Najkrótszy kod w bajtach wygrywa!
źródło
Odpowiedzi:
Jolf,
31272523 bajtówJest to zakodowane w kodowaniu ISO-8859-7 i zawiera niedrukowalne, więc oto zrzut heksowy:
Spróbuj tego skrzypka online lub zweryfikuj wszystkie przypadki testowe jednocześnie (użyj przycisku pełnego uruchomienia) .
To kończy się z błędem dla n = 0, który jest domyślnie dozwolony.
Ogromne podziękowania dla Conora za grę w golfa
46! bajty. przekreślone inb4 cztery nadal wyglądają jak cztery komentarzeWyjaśnienie
źródło
xxd -r
.Shtriped , 317 bajtów
Kiedy zadaję to pytanie, mogę pochwalić się moim nowym „purystycznym” językiem.
(zdecydowanie działa w wersji 1.0.0 )
W Shtriped nie ma żadnych wbudowanych operacji matematycznych, z wyjątkiem zwiększania i zmniejszania. Nie ma również pętli ani warunków warunkowych, więc wszystkie te rzeczy muszą być tworzone od zera w każdym programie.
To, co robi mój program, na przykład
@
jest w zasadzie dla pętli,+
to funkcja dodawania,}
jest>=
. Rzeczywiste wyjście jest wytwarzane tylko w ostatnich 8 wierszach programu.W Shtriped nie ma również żadnych łańcuchów. Możesz przyjmować i drukować ciągi, ale wszystkie są reprezentowane wewnętrznie jako liczby całkowite o dowolnej precyzji, które można tylko zwiększać i zmniejszać. Dlatego nie ma łatwego sposobu na uzyskanie długości sznurka
10
do wypełnienia kwadratowego środka odpowiednią ilością spacji. Musiałem zebrać razem funkcję,~
która skutecznie oblicza,floor(log10(N)) + 1
aby znaleźć długość N w systemie dziesiętnym.Może to prawdopodobnie golfed nieco bardziej poprzez zmianę miejsca i sposobu, które zmienne są używane, ale nie , że znacznie więcej. Nie da się obejść nieodłącznych ograniczeń Shtripeda. (W każdym razie nigdy nie miał być językiem golfowym.)
Skomentowany kod (ukośnik odwrotny to komentarz):
źródło
Poważnie,
32313029 bajtówWypróbuj online!
Wyjaśnienie:
źródło
JavaScript (ES6),
73 8278 bajtówZaoszczędzono 4 bajty dzięki @ user81655
Pobiera ciąg, a nie liczbę do wprowadzenia.
Wypróbuj online (wszystkie przeglądarki działają)
źródło
*(n-2)
z*~-~-n
zapisać bajt.MATL ,
342926 bajtówDziała to z bieżącą wersją (13.0.0) języka / kompilatora
Wypróbuj online!
źródło
T-SQL / SQL Server 2012+,
167161 bajtówWynik:
LiveDemo
Wprowadź żądany rozmiar i kliknij, Run queryaby uzyskać reprezentację tekstu.
Uwaga: to demo nie wyświetla czcionek o stałej szerokości . Więc
7
jest grubszy niż1
.EDYTOWAĆ:
Jeśli traktujemy dane wejściowe jako ciąg znaków:
LiveDemo2
źródło
Julia, 78 bajtów
Jest to anonimowa funkcja, która przyjmuje liczbę całkowitą i drukuje prostokąt ASCII do STDOUT. Aby go wywołać, przypisz go do zmiennej.
Nie golfowany:
Wypróbuj online
źródło
Rubinowy, 100 bajtów
Szkoda, że nie udało mi się nawet pokonać JS. Każda dalsza pomoc w grze w golfa byłaby mile widziana.
Oto mniej lub bardziej nie golfowa wersja:
źródło
n.to_s
ponieważ używasz jej tak często, dając cim*n
pierwszą część im+" "*[(n-2)*m.length,0].max+m
drugą część.Siatkówka, 76 bajtów
Wyjaśnienie może przyjść jutro.
Wypróbuj online tutaj.
źródło
C ++ 14, 156 znaków
Myślałem, że to całkiem fajne rozwiązanie, choć oczywiście nie może pobić większości innych wpisów tutaj.
Nie golfowany:
I jak zawsze, aby wywołać funkcję use
[](string t) { ... }("10");
źródło
TSQL,
112104 bajtówźródło
Minkolang 0,15 , 57 bajtów
Wypróbuj tutaj!
Wyjaśnienie
źródło
Perl,
797674 bajtówCałkiem proste. Pierwszy argument wiersza poleceń jest traktowany jako liczba. Umieść skrypt w pliku i uruchom z
perl file.pl 1
.źródło
shift
można zastąpićpop
.Perl,
626058 + 2 = 60 bajtówWymaga
-nlE
flag:Z dodanymi spacjami:
źródło
R, 90 bajtów
Tworzy to macierz
x*x
wielkości, a następnie wypełnia się spacjami wielkościnchar(x)
. Jeślix
mniejsze niż 2, nic nie jest wypełniane.źródło
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
jest o 10 bajtów mniej, używając indeksowania ujemnego i zastępującn=x,s=''
gox,,''
tio.run/nexus/r#DYpBCsAgDAT/...write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
dla 72 bajtów.Pyth - 26 bajtów
Wypróbuj online tutaj .
źródło
Pip
-l
, 21 bajtówUżywa funkcji językowych nowszych niż pytanie, co jest dozwolone na podstawie bieżących zasad; jeśli sformułowanie pytania zostanie zinterpretowane w celu zastąpienia wspomnianej polityki, patrz 25-bajtowa odpowiedź poniżej.
Wypróbuj online!
Dzięki odpowiedzi MATL Luisa Mendo na
(a+1)%n<2
lewę.Wyjaśnienie
Yq
czyta wiersz ze standardowego wejścia i ciągnie go doy
. Następnie:Oryginalna odpowiedź na 2016 r., 25 bajtów (plus
-l
flaga):Dziennik zmian:
MC
został dodany niedawno; wówczas użyłemMMCG
(mapa-mapa + siatka współrzędnych).++
z list, więc musiałem to zrobić++*
(zastosować++
do każdego elementu).M
ap został rozszerzony: teraz<string1> M <string2>
zwraca listęlen(<string2>)
kopii<string1>
; w tym czasie użyłemsX#y
spacji powtarzającej ciąg znaków przezlen(y)
.źródło
Pyth,
3730 bajtówWypróbuj tutaj.
źródło
Retina , 90
Znów jestem pewien, że eksperci będą w stanie grać w golfa:
Wypróbuj online.
źródło
¶
zamiast;
pozbyć się ostatniego etapu?)[^¶]+
jest pod ręką.+
.Galaretka, 28 bajtów
Grr, nie mogę powiedzieć, czy Jelly jest zła w smyczkach, czy też jestem zła w Jelly.
Wypróbuj online.
źródło
Pyke , 33 bajty (niekonkurencyjne)
Wyjaśnienie:
źródło
CJam, 27 bajtów
Dzięki @ MartinBüttner za sugestie
ff
.a+[0X(]&
Jest dość podejrzany, ale cóż.Wypróbuj online!
źródło
Python 2, 70 znaków
źródło
Haskell, 78 bajtów
Przykład użycia:
Funkcja
>>
jest przydatna:<list> >> <string>
sprawia, żelength <list>
kopie<string>
, np górnej i dolnej linii dlax=10
są[1..10] >> "10"
->"10101010101010101010"
.źródło
1
której krzyk wyprowadza pojedynczy1
. Zwracamy również listę ciągów, podczas gdy wyzwanie wymaga pojedynczego ciągu. W tamtych czasach mieliśmy znacznie bardziej surowe reguły we / wy, elastyczne reguły we / wy są nowością.Perl, 72 bajty
Opiera się na nowoczesnych funkcjach Perla:
jest automatycznie dostępny od wersji Perla 5.10 (wystarczy użyć wersji 5.10 lub nowszej).
szczęśliwie przyjmuje pracować na rvalue (e str_expr niekoniecznie zredukowane do skalarnej) uzyskując r esult (tzw R funkcji "na końcu wyrażenia regularnego) bez zmiany początkowego str_expr.
źródło
PHP, 151 bajtów
Absolutny bałagan, potrzebujesz więcej czasu na optymalizację.
s(Number)
daje wynik.źródło
Java 8, 280 bajtów
To tylko około 10 razy dłużej niż najkrótsze odpowiedzi, co jest naprawdę dobre dla Javy!
Przykładowy przebieg:
źródło
Python 3,
10896148 bajtówNiegolfowane / wyjaśnione:
Ponieważ jest to moja pierwsza odpowiedź na golfa , pomocna byłaby konstruktywna krytyka i / lub sugestie!
źródło
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. Co więcej,while b:
jest równoważnewhile b!=0
, więc brakuje 3 kolejnych bajtów.Rdza,
141137 bajtówWykorzystywał niektóre elementy formatowania, w przeciwnym razie byłoby to o wiele dłużej.
Rozpakowane:
Link do placu zabaw
źródło
PowerShell,
989695838275 bajtówSkrypt testowy niepoznany i wyjaśniony:
Wynik:
źródło