Zbuduj mi mur z cegły!


73

Wyzwanie

Potrzebuję pomocy przy budowie muru! Rzuć dla mnie trochę kodu bez wprowadzania danych i stwórz następującą ścianę wyjściową pokazaną poniżej:

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

Teraz ta ściana ma dokładnie 10wysokość 70znaków i szerokość znaków.

Jak wspomniano powyżej, brak danych wejściowych, tylko kod. Najmniej bajtów, musimy skutecznie zbudować ten mur z cegły. Oczywiście ten program musi działać, aby zbudować ścianę ...? albo oczywiście się nie zbuduje! Powodzenia!


Zwycięzca

Zwycięzca udaje się do Marinusa za pomocą APLjęzyka, wymagając całego 12bajtu! https://codegolf.stackexchange.com/a/99028/61857


Dziękujemy wszystkim za udział!



8
Również powiązane. (dziwne, że to powinno się dzisiaj pojawić, haha)
Conor O'Brien

1
W porządku. Dam ci znać, kiedy będę miał działającego tłumacza. Właściwie pracuję nad tym teraz :)
ETHproductions


30
Za punkty bonusowe zmuś Meksyk za to.
Dawood ibn Kareem,

Odpowiedzi:


46

APL, 12 bajtów

10 70⍴'_|__'

Wynik:

      10 70⍴'_|__'
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

1
Właśnie zauważyłem tę odpowiedź, kiedy wstawiłem swoją odpowiedź J. są w zasadzie takie same haha
Conor O'Brien

2
To daje coś jeszcze oprócz ściany ascii. Czy to jest dozwolone?
Bufor

kiedy korzystam z tryapl.org, mam wyjście ścienne. co otrzymałeś @TheBitByte?
FivePixels,

4
@Dylan Prawdopodobnie jest zdezorientowany, ponieważ odpowiadający włączył program do wyjścia, nie znając natury APL w REPL.
Conor O'Brien,

191

Trumpscript , 303 285 244 231 226 bajtów

make i 1000005-1000000
as long as,i;:
make i,i - fact;
say "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
say "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"!
America is great

Chciałbym powiedzieć, że jest to jeden z najbardziej szczegółowych języków, w którym prawie wszystko nie można skompilować w działający program.

Najwyraźniej to, czy -działa zamiast, minuszależy całkowicie od tłumacza, a czasem działa. Tym razem tak się stało, więc wkładam go jako golfa.

Nadużywa faktu, że Trumpscript jest napisany w Pythonie i dlatego factgdy jest używany jako liczba całkowita, to jeden.

Zapraszamy do gry w golfa.


48
Rozumiem, że Trumpscript nie zezwala na liczby mniejsze niż 1 000 000? ;-)
ETHproductions

3
masz rację.
Niebieski,

2
Czy umiesz używać i is 1000005-1000000i i is i-fact? (Wystarczy spojrzeć na podejmowane readme z Trumpscript.)
AlexRacer

19
Jestem zaskoczony, że pozwala ci to używać 1000000. Dokumentacja stwierdza All numbers must be strictly greater than 1 million. The small stuff is inconsequential to us..
Szalony fizyk

9
Facta lies(i inne stałe prawdy / fałszu) mają losową, zależną od czasu szansę na przerzucenie flopa (odwrócenie) podczas tokenizacji (patrz tokenizer.py, wyszukiwanie flip_flop) może być przyczyną, dla której wydaje się, że nie działa minus, kiedy naprawdę musiał to zrobić z factw tym momencie
pinkfloydx33

20

J, 12 bajtów

10 70$'_|__'

Kształtuje sznurek po prawej stronie w kształt 10 na 70. Prosty!


18

BBC BASIC, 28 bajtów

Tokenysed rozmiar pliku 23 bajty.

WIDTH70P.STRING$(175,"_|__")

WIDTH70zwykle następowałaby nowa linia. Ustawia szerokość pola na 70. Następnie drukujemy 175 kopii ciągu, które owijają się.


2
Najlepsze (ab) użycie WIDTH, jakie widziałem :)
ElPedro,

Powinno to mieć wtedy „23 bajty” w nagłówku.
Adám

@ Adám Tylko jeśli wersja tokena jest opublikowana jako odpowiedź.
ErikE

17

Brainfuck, 171 bajtów

+++++[>+++++++++++++++++++<-]+++++++[>>++++++++++++++++++<<-]>>--<<++[>>>+++++<<<-]+++++[>.>.>>+++++++++++++++++[<<<...>.>>-]<.>+++++++++++++++++[<<<...>.>>-]<<<..>>.<<<-]

Brainfuck jest fajny, oto moje poddanie.

Oto wynik:

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

Oto link, aby spróbować

https://repl.it/EW2Z/0


16

WinDbg, 45 bajtów

f2000000 L2bc 5f 7c 5f 5f;da/c46 2000000 L2bc

Jak to działa:

f 2000000 L2bc 5f 7c 5f 5f; *Repeat the pattern _|__ (5F 7C 5F 5F) to fill 2BC (700) bytes 
                            *starting at 2000000
da /c46 2000000 L2bc        *Show 2BC (700) ASCII chars starting from 2000000 in lines 
                            *of length 0x46 (70)

Wynik:

0:000> f2000000 L2bc 5f 7c 5f 5f;da/c46 2000000 L2bc
Filled 0x2bc bytes
02000000  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
02000046  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
0200008c  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
020000d2  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
02000118  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
0200015e  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
020001a4  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
020001ea  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
02000230  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
02000276  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"

10

Pyth, 12 bajtów

Kod:

jcT*175"_|__

Wyjaśnienie:

       "_|__    # For the string "_|__"
   *175         # Repeat it 175 times
 cT             # Chop into 10 equal pieces
j               # Join them by newlines

Wypróbuj tutaj .


10

Python 2, 37 bajtów

s="_|__"*17;print(s+"_|\n__%s\n"%s)*5

Rozkłada dwa wiersze jako 17 kopii _|__plus kolejna kopia przerywana nową linią, plus 17 kolejnych kopii plus kolejna nowa linia.

Dłuższe alternatywy:

print"%s_|\n__%s\n"%(2*("_|__"*17,))*5

s="_|__"*17;print"%s_|\n__%%s\n"%s%s*5

for i in[0,2]*5:print("_|__"*18)[i:i+70]

print("_|__"*17+"_|\n"+"___|"*17+"__\n")*5

for s in["_|__","___|"]*5:print(s*18)[:70]

s="_|__"*99;exec"print s[:70];s=s[2:];"*10

print("%s"*70+"\n")*10%(175*tuple("_|__"))

Twoja ostatnia alternatywa jest krótsza niż print(("%s"*70+"\n")*10%(175*(*"_|__",)))w Pythonie 3.
mbomb007,

8

05AB1E , 13 bajtów

Kod:

"_|__"175×Tä»

Wyjaśnienie:

"_|__"         # For the string "_|__"
      175×     # Repeat that 175 times
          Tä   # Split into 10 even pieces
            »  # And join them by newlines

Wykorzystuje kodowanie CP-1252 . Wypróbuj online!


7

PHP, 44 42 41 znaków

<?=chunk_split(str_pad(_,700,"|___"),70);

(Tylko dlatego, że nie miał szansy użyć chunk_split() ).

Dzięki:

  • user59178 za sugerowanie użycia str_pad()(znak -1)

Przykładowy przebieg:

bash-4.3$ php <<< '<?=chunk_split(str_pad(_,700,"|___"),70);'
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

bajty, a nie liczba znaków.
FivePixels,

2
Podobnie. Nie używam znaków wielobajtowych.
manatwork


2
@pajonk, Naprawiono PPCG - Przekreślony styl użytkownika 44 na mojej maszynie: i.stack.imgur.com/czn5h.png
manatwork

Możesz zapisać bajt, używając str_padzamiast str_repeat, głównie dlatego, że _jest traktowany jako stała z wartością _.
user59178,

7

Vim, 30 24 19 klawiszy

18a___|<esc>YP2x}h.yk4P

Dzięki DrMcMoylex i nmjcman101 za oszczędność cennych naciśnięć klawiszy!


1
Ładna odpowiedź, witamy na stronie! Kilka wskazówek: 1) aliczy się, więc możesz zrobić 18a___|<esc>zamiast makra. 2) <cr>w trybie normalnym jest równoważne j0, więc możesz usunąć jeden bajt z drugiego makra.
DJMcMayhem

Fajnie, dzięki za wskazówki!
karpfen,

1
Grałem trochę w twoje rozwiązanie dla zabawy. Formatowanie ściany przed kopiowaniem / wklejaniem pozwala zaoszczędzić wszystkie bajty niewykonania makra: 18a___|<esc>YP2x}h.yk5P19 bajtów.
nmjcman101

Fajnie, zaktualizuję odpowiedź! Zastąpię od drugiego do ostatniego klawisza 4, w przeciwnym razie ściana będzie zbyt wysoka :)
karpfen

6

Perl, 47 34 29 bajtów

$_="_|__"x175;say for/.{70}/g

Możesz zagrać w golfa do 29:say for("_|__"x175)=~/.{70}/g
Dada

Z jakiegoś powodu to nie dawało żadnych wyników za każdym razem, gdy próbowałem, ale znalazłem inne rozwiązanie w tak wielu bajtach. Ale dziękuję!
Gabriel Benamy,

Kod, który zasugerowałem, generuje prawidłowy wynik ... Może zapomniałeś o nawiasie "_|__"x175lub coś takiego?
Dada,

Myślę, że tak właśnie jest. Uznałem, że nawiasy muszą gdzieś iść, po prostu nie mogłem dowiedzieć się, gdzie, lol
Gabriel Benamy,

Huhu, trudno zapamiętać pierwszeństwo każdego operatora ( =~ma wyższy priorytet niż x)!
Dada,

5

Perl, 31 bajtów

say+($@="_|__"x17,"_|
__$@
")x5

Aby -Ego uruchomić, potrzebujesz flagi:

perl -E 'say+($@="_|__"x17,"_|
__$@
")x5'

Myśl o nieco innym podejściu do 29 bajtów: say for("_|__"x175)=~/.{70}/g:). Podoba mi się sztuczka, którą tam zastosowałeś!
Dom Hastings,

@DomHastings huhu, napisałem dokładnie ten sam kod w komentarzach do odpowiedzi Gabriela Benamy'ego!
Dada,

Nie! Nie widziałem tego! Potem zobaczyłem, że był używany w wielu innych odpowiedziach ... No cóż!
Dom Hastings,

@DomHastings Tak, początkowo o tym nie myślałem, a było to już w odpowiedzi Gabriela, dlatego nie zaktualizowałem mojej odpowiedzi później;)
Dada,

5

V , 24 , 16 bajtów

175i_|__ò70|lé

Wypróbuj online! Zawiera <esc>znaki ( 0x1B), więc oto zrzut heksowy:

0000000: 3137 3569 5f7c 5f5f 1bf2 3730 7c6c e90a  175i_|__..70|l..

8 bajtów zaoszczędzonych pośrednio dzięki Jordanowi!


19 bajtów: v.tryitonline.net/... Nie mogłem jednak wymyślić, jak używać .\{-}skrótu wspomnianego w V docs .
Jordan

@Jordan Wow, bardzo miło! \{-}Skrót nie będzie działać tak, ponieważ nie można zmienić numer wewnątrz. Możesz jednak ustawić wysoki bit, \{aby uzyskać to zamiast tego . Możesz to opublikować jako odpowiedź.
DJMcMayhem

Ach, to ma sens. Wysłano tutaj: codegolf.stackexchange.com/a/99070/11261
Jordan

Cholera, wciąż muszę czytać ten język: 25 bajtów
statox,

5

V , 18 bajtów

-1 bajt dzięki DJMcMayhem.

175i_|__<Esc>Ó.û70}/°ò

Oto z niedrukowalnymi znakami w formacie XXD:

0000000: 3137 3569 5f7c 5f5f 1bd3 2efb 3730 7d2f  175i_|__....70}/
0000010: b0f2                                     ..

Wypróbuj online!


Fajnie, nie jestem już jedyną osobą, która użyła V! Teraz muszę sprawdzić, czy uda mi się wrócić na prowadzenie, haha
DJMcMayhem

5

MATL, 15 bajtów

'_|__'700:)70e!

Oczywiście możesz wypróbować online! Wyjaśnienie:

'_|__' % Put a brick on the stack
700    % 700 times
:)     % Makes a happy mason...
70e!   % Secret freemason code

OK, właściwie działa w następujący sposób:

'_|__' % Put the first bit of the string on the stack
700:   % Put 1, 2, ..., 700 on the stack as array
)      % Index into the string, modularly. Result: '_|___|__ ... __'
70e    % Reshape into 70 rows (and consequently, 10 columns)
!      % Transpose to get the desired output.

Dobra robota! Twoja buźka jest lepsza niż moja
Luis Mendo

@LuisMendo Naprawdę, używanie emotikonów można uznać za wzór projektowy w MATL. xD Być może mógłbyś mieć :)włączony C... ale to byłby twój ostatni 1-bajtowy punkt kodu zniknął (lub czy jest C
jakiś

Chcesz się pozbyć buźki? :-P
Luis Mendo

5

Python 2, 46 44 bajtów

Wystarczy użyć mnożenia ciągu, aby zbudować ciąg, i krojenie, aby uzyskać odpowiednie bity :)

k='_|__'*18
print'\n'.join([k[:70],k[2:]]*5)

dzięki Antony Hatchkins za zapisanie dwóch bajtów :)


Może być o 2 bajty mniej:print'\n'.join([k[:70],k[2:]]*5)
Antony Hatchkins

@AntonyHatchkins Thanks!
Kade

4

PowerShell v2 +, 34 30 bajtów

'_|__'*175-split"(.{70})"-ne''

Głupi algorytm dopasowywania wyrażeń regularnych wymagający -ne''... marnuje pięć bajtów!

'_|__'*175-split"(.{70})"-ne''
'_|__'*175                     # Repeat this string 175 times
          -split"       "      # Split on this regex pattern:
                  .{70}        # Match any character 70 times
                 (     )       # Encapsulated in parens so we keep the regex results
                         -ne'' # But don't select the empty strings
                               # Output with newlines via Write-Output is implicit

Zaoszczędź 4 bajty dzięki Conor!


Czy .{70}byłbyś krótszy dla wyrażenia regularnego?
Conor O'Brien

splitdziała tak w innych językach - zawsze otrzymujesz niedopasowane porcje, niezależnie od tego, czy chcesz, czy nie. Niektóre języki mają matchoperator, którego można użyć do zwrócenia tablicy tylko pasujących wyników, ale nie widzę dla tego odpowiednika PowerShell.
Neil,

@Neil Performing 'abc'-split'(.)'powróci ('','a','','b','','c',''). Nic nie ma sobie równych, ale ze względu na to, jak algorytm przetwarza ciąg wejściowy, odzyskujesz puste ciągi. Widzieć tutaj .
AdmBorkBork,

Tak, i mówię, że nie powinieneś być zaskoczony tym wynikiem, ponieważ to właśnie powinien zrobić podział.
Neil,

@Neil Zaskoczony? Nie, nie bardzo. Nie znaczy to jednak, że muszę być z tego powodu szczęśliwy. : D
AdmBorkBork

4

C, 131 115 113 103 97 95 bajtów

i,j;main(){for(;i<10;puts(i++&1?"|__":"|"))for(j=0;j<18-(i&1);printf(&"|___"[j++?0:i&1?1:3]));}

Czas zacząć grać w golfa ...

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

3

Galaretka , 14 bajtów

“_|__”ṁ700s70Y

TryItOnline!

W jaki sposób?

“_|__”ṁ700s70Y - Main link: no arguments
“_|__”         - literal ['_','|','_','_']
      ṁ700     - mould like something 700 long
          s70  - split into chunks of length 70
             Y - join with line feeds

1
Z definicji galaretka nie może być dłuższa niż J.
Adám

Zrobiłem coś podobnego bez osobliwego : “_|__”ẋ175œs⁵Y(14 bajtów)
Erik Outgolfer



3

JavaScript REPL, 45 bajtów

"_|__".repeat(175).match(/.{70}/g).join("\n")

1
Witamy w PPCG! Powinien być oznaczony jako „JavaScript REPL” lub podobny, ponieważ nie drukuje niczego poza środowiskiem interaktywnej konsoli.
Martin Ender,

1
Czy to nie 45 bajtów?
acrolith

@daHugLenny masz rację, liczyłem \ n jako pojedynczy bajt
Juan Tonina

gdzie jest console.log?
cardeol,

1
Tak długo jak używasz ES6 (myślę, że jest), można użyć ciągi szablonów, więc join("\n")staje się przyłączyć <grawis> <literal nowalinia> <grawis>
Stephen

3

JavaScript (ES6), 48 bajtów

f=(n=350)=>n?(n%35?'_':`
_`)+"|_"[n%2]+f(n-1):""

Ponieważ rekurencja.


3

Bash, 44, 41 , 40 bajtów

printf _\|__%.0s {1..175}|egrep -o .{70}

Printf tworzy pojedynczy wiersz o długości 700 znaków, egrep dopasowuje do niego 70 znaków na raz.





2

Rubinowy, 30 bajtów

Dzięki manatwork dla tego rozwiązania

puts ("_|__"*175).scan /.{70}/

Rubin, 39 bajtów

10.times{|i|puts ("_|__"*18)[i%2*2,70]}

2
Podejście wygenerowania-all-potem-split jest krótsza i tu: puts ("_|__"*175).scan /.{70}/.
manatwork

@manatwork wielkie dzięki! Rzadko myślę o używaniu, scanponieważ nie czuję się tak dobrze z wyrażeniami regularnymi. Wiesz, że mogłeś zamieścić to jako własną odpowiedź ...
Level River St

2

Haskell, 56 47 bajtów

unlines$[1..5]>>take 70.cycle<$>["_|__","___|"]
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.