Twoje zadanie: podając liczbę n
, wygeneruj znak „+”, który oznacza, że n
znaki znajdują się poza jego centrum. Jeśli jest to mylące, sprawdź przypadki testowe.
Standardowe metody wprowadzania: dane wyjściowe muszą być ciągiem lub drukowane. Obowiązują standardowe luki.
Input: 1
Output: + ] 1 away from center `+`.
Input: 2
Output: + ] 2 away from center `+`.
+++ ] 1 away from center `+`.
+
Input: 3
Output: + ] 3 away from center `+`.
+
+++++
+
+
To jest golf golfowy , więc wygrywa najkrótszy kod!
Odpowiedzi:
Węgiel drzewny , 5 bajtów
Wypróbuj online!
źródło
P+
= krzyż).Python 2 , 53 bajty
Wypróbuj online!
źródło
JavaScript (ES6),
6765636059 bajtówx-1
, pierwszego na--x
i drugiego nax
."\n"
z`[newline]`
.repeat
w sposób, który zmniejszył rozmiar. (Z wyróżnieniem dla Marie za jej wysiłki)Spróbuj
źródło
"\n"
dwoma backtickami i dosłowną nową linią między nimia='repeat',v=.....
I` `[a]
repeat()
ale moje pierwsze próby były większe o 2 lub 3 bajty, więc zrezygnowałem! Spojrzę na to jeszcze raz, kiedy wrócę przed komputerem.x=>(v=(` `[r='repeat'](--x)+`+<newline>`)[r](x))+`+`[r](x*2+1)+`<newline>`+v
MATL , 11 bajtów
Wypróbuj online!
Objaśnienie z przykładem
Zastanów się
n = 3
.źródło
Węgiel drzewny ,
1613 bajtówWypróbuj online!
Używa innego podejścia niż inne odpowiedzi na węgiel drzewny.
Wyjaśnienie
Teraz lewy górny róg jest gotowy, będzie wyglądał mniej więcej tak:
Ostatni krok jest kluczem do tego programu, wykorzystuje lewą górną część plusa, aby wygenerować resztę plusa, odzwierciedlając go w kierunku południowo-wschodnim (w prawo i w dół).
źródło
Język programowania Szekspira ,
749743 bajtówWypróbuj online!
Edycja: dostosowałem odpowiedź do oficjalnej implementacji SPL - wcześniej nie mogłem jej uruchomić.
Gra w golfa 6 bajtów, ponieważ numery scen nie muszą być następujące po sobie.
Wyjaśnienie :
SPL to esolang zaprojektowany tak, aby wyglądał jak gra Szekspira. Rzeczowniki dodatnie mają wartość 1 (tutaj używany jest kot ), a rzeczowniki ujemne mają wartość -1 (nie użyto żadnego, ale świnia jest jednym z nich). Przymiotniki modyfikują stałą, mnożąc ją przez 2.
Wszystko do pierwszej kropki jest tytułem i nie ma znaczenia.
Znaki są zmiennymi całkowitymi, każdy z nich ma również stos, ale nie musiałem korzystać z tej funkcji.
Akty i sceny są używane jako etykiety goto
Przydaje się to tylko wtedy, gdy na scenie jednocześnie znajdują się dokładnie dwie postacie.
Czyta cyfrę i sprawia, że Ford ją pamięta.
Jak widać, język angielski jest ważny w języku SPL. To sprawia, że wartość Pucka „różni się między kotem a mną”. Ale co to oznacza?
cat
jest rzeczownikiem pozytywnym, więc jestPuck = 1 - Ford
.Exeunt to tylko liczba „wyjście” i bez argumentów oznacza, że wszyscy na scenie wychodzą.
Jest to również
Page = 1 - Ford
wypowiedziane przez innego aktora, więcI
byłoby źle. Ponieważ jest to pętla, nie mogę po prostu skopiować wartościPuck
.Już teraz całkiem proste.
Ajax = Puck * Page
.„as [przym] as” to
==
operator.Jeśli Ajax == 0 ... „kot” ma wartość 1, „duży kot” ma wartość 2, „duży duży kot” ma wartość 4 itd. Po podstawieniu prostych stałych otrzymujemy „sumę sumy 32 i 8 oraz 2 i 1” -> „sumę sumy 40 i 2 i 1” -> „sumę 42 i 1” -> „43”, czyli ASCII dla +.
inaczej jest to po prostu „gruby gruby gruby gruby gruby kot”, więc Ajax otrzymuje wartość 32, ASCII za spację.
Jest to polecenie do wypisywania znaku.
To konstrukcja pętli. Przyrosty „sumujesz siebie i kota”, oraz
if(Page != Ford) goto Scene III
. Reszta programu wykorzystuje te same komponenty, więc tutaj jest bardziej czytelna wersja pseudokodu:źródło
If not,let us return to Scene III.
” -1; łamie czwartą ścianę: PGalaretka , 11 bajtów
Wypróbuj online!
źródło
Mathematica, 39 bajtów
CrossMatrix
jest wbudowany, który generuje matrycę o wymaganym kształcie z1
s zamiast+
s i0
s zamiast spacji. Jeśli pomnożymy tę macierz przez"+"
, to zastępuje ona1
s+
, pozostawiając0
s niezmienioną (oczywiście ...0*x = 0
i1*x = x
prawda?). Następnie zastępujemy zera ręcznie spacjami za pomocą/. 0->" "
. Na koniec drukujemy każdą linię matrycy za pomocąPrint@@@(...)
.źródło
Print
że można tak używać.C, 69 bajtów
Niezbyt interesujące ... Pętle nad kwadratem, drukując odpowiednią postać.
źródło
Rubin,
4140 bajtówWypróbuj online!
źródło
GNU sed ,
10499 bajtów-5 dzięki seshoumara
Obejmuje +1 dla
-r
Pobiera dane wejściowe jednoargumentowe.
Wypróbuj online!
źródło
s/( *2)2(2*)/\1\n\1\2/
is/(.*)(\n1*)/&\n\1/
jak pokazano tutaj , aby uzyskać łączny wynik 99.Lua
113, 90 bajtówźródło
Python 2 , 52 bajty
Wypróbuj online!
53-bajtowa alternatywa ( TIO ):
źródło
R, 54 bajty
Golenie 7 bajtów dzięki @Jarko Dubbeldam:
poprzednia odpowiedź:
źródło
function(n){a=matrix("",n*2-1,n*2-1);a[n,]="x";a[,n]="x";a}
byłoby 59 bajtów!matrix("",y<-n*2-1,y)
a[n,]=a[,n]="x"
działa również, oszczędzając więcej bajtów.scan()
i czyniąc z niego program, a nie funkcję:n=scan();a=matrix("",y<-n*2-1,y);a[n,]=a[,n]="+";a
PowerShell , 48 bajtów
Wypróbuj online!
Pobiera dane wejściowe
$n
. Zaczyna się od utworzenia ciągu--$n
spacji połączonego z+
. To jest konwertowane na tablicę za pomocą operatora przecinków (nowo zmniejszonej)$n
razy. Ta tablica jest przechowywana$x
i zamykana w parenach, aby umieścić kopię w potoku.Następnie wykonujemy środkową sekcję, czyli
+
ciąg pomnożony przez odpowiednią liczbę razy. Zostało to w przygotowaniu. Wreszcie$x
ponownie uruchamiamy rurociąg.Wszystkie są pozostawione w potoku po zakończeniu programu, a domniemane
Write-Output
wstawia nowy wiersz między elementami.źródło
Perl 5 , 45 bajtów
44 bajty kodu +
-p
flaga.Wypróbuj online!
Niektóre podobne (ale wciąż różne) podejścia:
48 bajtów (47+
-p
):50 bajtów (49+
-n
):źródło
Python 2 ,
60,56 bajtówWypróbuj online!
źródło
CJam , 23 bajty
Wypróbuj online!
Wyjaśnienie
To wydaje się nieco nieoptymalne, ale pomysł polega na nałożeniu następujących dwóch siatek:
Co daje pożądany rezultat.
źródło
CJam, 17 lat
Wypróbuj online
Wyjaśnienie:
źródło
Oktawa,
3631 bajtówZainspirowany odpowiedzią MATL @LuisMendo.
Wypróbuj online!
Poprzednia odpowiedź:
Wypróbuj online!
źródło
05AB1E ,
151412 bajtówWypróbuj online!
-2 dzięki Emignie.
źródło
F'+}¹·<×)û.c
dla 12.Python 2, 65 bajtów
Wypróbuj online!
źródło
JS (ES6),
887473 bajtyPrawdopodobnie można grać w golfa więcej.
źródło
"\n"
dwoma backtickami i dosłowną nową linią między nimiJavaScript (ES6), 60 bajtów
Wyprowadza dwie końcowe znaki nowej linii. Alternatywne sformułowanie, również 60 bajtów:
źródło
PowerShell, 48
Wydaje się, że nie jest krótszy (i prawie takie samo podejście jak inne rozwiązanie):
lub
źródło
V ,
191815 bajtówGrał w golfa 3 bajty dzięki @ nmjcman101 przy użyciu
.
iÒ+
Wypróbuj online!
źródło
REXX, 81 bajtów
źródło
PHP, 68 bajtów
83 bajtów
źródło
$m=$argn
i wstępnej inkrementacji,$i
a nie po inkrementacji. Możesz także zapisać bajt, przesuwając$m
przypisanie końca i upuszczając nawiasy.for(;$i<$c=-1+2*$m=$argn;)echo"\n".str_pad("+",$c," +"[$m==++$i],2);
while(++$y<2*$n=$argn)echo"\n",str_pad("+",$n*2-1," +"[$y==$n],2);
66 bajtów (i zaoszczędzić jeszcze jeden fizyczny podział linii)MUMPS, 48
5053bajtówźródło
Brain-Flak , 216 + 1 = 217 bajtów
+1 bajty od
-A
flagiWypróbuj online!
Wyjaśnienie, które nastąpi
źródło