Wyzwanie:
Narysuj prostokąt pól ASCII: []
Zasady:
Przyjmuje szerokość i wysokość
Możesz założyć, że oba są liczbami
Musi utworzyć ciąg ze znakami nowej linii, \ n
Przykłady:
2, 2:
[][]
[][]
2, 3:
[][]
[][]
[][]
Najmniej wygranych bajtów.
Wyzwanie:
Narysuj prostokąt pól ASCII: []
Zasady:
Przyjmuje szerokość i wysokość
Możesz założyć, że oba są liczbami
Musi utworzyć ciąg ze znakami nowej linii, \ n
Przykłady:
2, 2:
[][]
[][]
2, 3:
[][]
[][]
[][]
Najmniej wygranych bajtów.
Odpowiedzi:
Grid@Table["[]",{#2},{#}]&
Gridobiekt Mathematica liczy się jako „ciąg znaków ze znakami nowej linii”?
v&DiiX"
v % Concatenate the (non-existing) stack contents: gives []
&D % String representation: gives '[]'
ii % Take two inputs
X" % Repeat those numbers of times vertically and horizontally. Implicit display
-2 bajty sprytną sztuczką dzięki insert_name_here
VE*`Y
Wyjaśnienie:
VE*`Y
V # Loop
E # <input> number of times
`Y # String representation of empty list (used to be "[]", but insert_name_here pointed out this shorter alternative)
* # repeat string implicit input number of times
# implicit print
`Y(ciąg znaków reprezentujący pustą listę) zamiast "[]".
f(w,h){for(h*=w;h--;)printf(h%w?"[]":"[]\n");}
lub
f(w,h){for(h*=w;h--;)printf("[]%c",h%w?0:10);}
Moja pierwsza próba gry w golfa, czy przegapiłem coś oczywistego?
f(w,h){h*=w;while(h--)printf("\n[]"+!(h%w));}
forpętli nie skróciłoby kodu jeszcze bardziej?
F„[]×,
Wyjaśnienie
Wejście przyjmuje się jako height, width
F # height times do
„[] # push "[]"
× # repeat width times
, # print with newline
>;;;;;;~++++++++:>~;;;;:>~*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-:<~<;;;;;-+>-:<-:-(-:::~<-:::(~<#<-;;-#~;)-:<#-::<;>-:-)
Wypróbuj online! Wymaga bajtu zerowego po każdym numerze wejściowym.
Nie wiem jak to działa. Mogę ci powiedzieć, że ta część kodu:
*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)-::<-::::>-::(;)::>-::*(-:~<~+-::>-:::<~<-+++++++++~:::<~+-:::>-::*)
analizuje liczby wejściowe.
+++++++++[>++++++++++<-]>+[>+>+<<-]>>++>,>+++++++++[<----->-]<--->>>,>+++++++++[<----->-]<--->++++++++++<[<<<[>+>+<<-]>[<<<.>.>>-]>[<<+>>-]>>.<-]
Mój pierwszy golf golfowy! Tak!
Dane wejściowe są w ascii + 48, więc aby zrobić 50, 50, musisz wprowadzić b, b (litery ascii dla 98)
+++++++++[>++++++++++<-]>+ Get the opening square bracket into first position
[>+>+<<-] Get it into the second and third position
>>++ Get the third position to be the closing bracket
>
,>+++++++++[<----->-]<--- Get first number into fourth cell
>>>
,>+++++++++[<----->-]<--- Get second number into seventh cell
>++++++++++ get newline into 8th position
<
[ Start our height loop
<<<[>+>+<<-] Get the width into the fifth and sixth positions
>[ Start our width loop at the fifth position
<<<.>. Print the second and third positions
>>-] Decrement the fifth position
>
[<<+>>-] copy the sixth position into the fourth position
>>. print newline
<-]
'[]'$~],+:@[
'[]'$~],+:@[ input: y, x
+:@[ double y
], pair with x
this gives (x, 2y)
$~ shape the left argument into the right argument's shape
'[]' 2-length character string
To daje nam xprzez 2yciąg powtarzających się []znaków.
ẋ⁾[]ẋ$Y
Dyadyczny link zwracający listę znaków (lub pełny program wypisujący wynik).
ẋ⁾[]ẋ$Y - Main link: number w, number h e.g. 2, 3
ẋ - repeat w h times [2,2,2]
$ - last two links as a monad:
⁾[] - literal ['[',']'], "[]"
ẋ - repeat list (vectorises) ["[][]","[][]","[][]"]
Y - join with newlines "[][]\n[][]\n[][]"
- if a full program, implicit print
.+
$*
1(?=1*(¶1+))|.
$1
G`1
1
[]
Wypróbuj online! Pobiera dane o wysokości i szerokości w osobnych wierszach.
Ài[]<esc>ÀÄ
gdzie <esc>jest 0x1b.
Ài[]<esc> " arg1 times insert []
ÀÄ " arg2 times duplicate this line
M"[]"َJ,
M"[]"َJ,
M //Executes code input1 times
"[]" //Pushes []
َ //Duplicates [] input2 times
J //Joins the stack
, //Prints with a trailing newline
param($w,$h),("[]"*$w)*$h
-3 dzięki Mathias!
param($w,$h),("[]"*$w)*$h
U*Vmożna skrócić doN×
Nzeszłej nocy. Nigdy nie pijcie i nie golfujcie, dzieci!
'[]'⍴⍨⊢,2×⊣
'[]' ciąg
⍴⍨ cyklicznie powtarzane, aby wypełnić kształt
⊢ właściwy argument (wiersze)
, i
2× dwa razy
⊣ lewy argument (kolumny)
EN×[]Iη
Wypróbuj online! Link jest do pełnej wersji kodu. Pobiera dane wejściowe w wysokości, szerokości zamówienia. Prymitywy rysunkowe Węgla drzewnego nie nadają się do tego, więc po prostu wychodzi to łatwo i odpowiednio powtarza []ciąg. Wyjaśnienie:
N First input as a number
E Map over implcit range
η Second input
I Cast to number
[] Literal string
× Repeat
Implicitly print on separate lines
p=paste
function(w,h)p(rep(p(rep('[]',w),collapse=''),h),collapse='
')
Zwraca anonimową funkcję, która konstruuje i zwraca ciąg.
function(w,h)write(matrix('[]',w,h),'',w,,'')
Anonimowa funkcja drukująca ciąg w żądanym formacie.
6 bajtów kodu, +1 dla -Rflagi.
VÆç"[]
Nie działa w najnowszej wersji z powodu błędu ç, ale działa w zatwierdzaniuf619c52 . Przetestuj online!
VÆ ç"[]
VoX{Uç"[]"} // Ungolfed
// Implicit: U, V = input integers
VoX{ } // Create the range [0...V) and replace each item X with
Uç"[]" // U copies of the string "[]".
-R // Join the result with newlines.
// Implicit: output result of last expression
import."strings"
func(x,y int)string{return Repeat(Repeat("[]",x)+"\n",y)}
[:|?[:|?@[]`';
Wyjaśnienie:
[:| FOR a = 1 to (read input from cmd line)
? PRINT a newlne
[:| FOR c = 1 to (read input from cmd line)
?@[]` PRINT A$ (containing the box)
'; and inject a semicolon in the compiled QBasic code to suppress newlines
To przyjmuje argumenty w kolejności # strzałki, # kol. Wyjście zaczyna się od nowej linii.
seq $(($1*$2))|sed s/.*/[]/|tr -d "
"|fold -w $(($1*2))
Wypróbuj online! Używa smaku TIO bash, ponieważ uruchamiam Windows.
(w,h)=>"".PadLeft(h).Replace(" ","".PadLeft(w).Replace(" ","[]")+'\n').Trim();
Jest to krótsze niż w przypadku pętli for i nie znam żadnej funkcji w języku C #, która mogłaby się powtarzać z mniejszym kodem.
l~"[]"*N+*
Z komentarzy można teraz wstawiać nowy wiersz.
w=>h=>("[]".repeat(w)+`
`).repeat(h)
f=
w=>h=>("[]".repeat(w)+`
`).repeat(h)
oninput=_=>o.innerText=f(+i.value)(+j.value);o.innerText=f(i.value=2)(j.value=2)
*{font-family:sans-serif;}
input{margin:0 5px 0 0;width:50px;}
<label for=i>w: </label><input id=i type=number><label for=j>h: </label><input id=j type=number><pre id=o>