Costruiscimi un muro di mattoni!


73

Sfida

Ho bisogno di aiuto per costruire un muro di mattoni! Metti insieme un po 'di codice per me senza input e produci la seguente parete di output mostrata di seguito:

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

Ora, questo muro è esattamente 10alto e 70largo.

Come detto sopra, nessun input, solo codice. Minimo numero di byte, dobbiamo costruire in modo efficiente questo muro di mattoni. Ovviamente, questo programma deve funzionare per far costruire il muro ..? o ovviamente non si costruirà da solo! In bocca al lupo!


Vincitore

Il vincitore va a Marinus usando la APLlingua, richiedendo interi 12byte! https://codegolf.stackexchange.com/a/99028/61857


Grazie a tutti per la partecipazione!



8
Anche correlati. (strano che questo dovrebbe accadere oggi, ahah)
Conor O'Brien l'

1
Va bene. Ti farò sapere quando avrò un interprete funzionante. Ci sto lavorando proprio ora, in realtà :)
ETHproductions


30
Per i punti bonus, fai pagare il Messico per questo.
Dawood ibn Kareem,

Risposte:


46

APL, 12 byte

10 70⍴'_|__'

Produzione:

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

1
Ho appena notato questa risposta mentre inserivo la mia risposta J. sono praticamente lo stesso haha
Conor O'Brien

2
Questo produce qualcos'altro oltre al muro ASCII. È permesso?
Buffer over Leggi il

quando uso tryapl.org, ho ottenuto l'output del wall. cosa hai ricevuto @TheBitByte?
FivePixels,

4
@Dylan Probabilmente è confuso, poiché il risponditore ha incluso il programma nell'output senza conoscere la natura REPL di APL.
Conor O'Brien,

191

Trumpcript , 303 285 244 231 226 byte

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

Vorrei dire che questo è uno dei linguaggi più prolissi in cui quasi tutto non riesce a compilarlo in un programma di lavoro.

Apparentemente se -funziona invece che minusdipende completamente dall'interprete e talvolta funziona. Questa volta è stato così lo sto mettendo come golf.

Abusa del fatto che Trumpscript è scritto in Python e quindi factquando usato come intero è uno.

Suggerimenti per il golf benvenuti.


48
Lo prendo Trumpscript non consente numeri inferiori a 1.000.000? ;-)
ETHproductions

3
hai ragione.
Blu,

2
Puoi usare i is 1000005-1000000e i is i-fact? (Ho appena dato un'occhiata al readme di Trumpscript.)
AlexRacer

19
Sono sorpreso che consente di utilizzare 1000000. Stati della documentazioneAll numbers must be strictly greater than 1 million. The small stuff is inconsequential to us. .
Fisico pazzo,

9
Facte lies(e altre verità / costanti false) hanno una possibilità casuale, basata sul tempo, di capovolgere (essere invertito) durante la tokenizzazione (vedi tokenizer.py, cerca flip_flop) potrebbe essere il motivo per cui sembrava non funzionare minus, quando davvero doveva fare con facta quel punto nel tempo
pinkfloydx33

20

J, 12 byte

10 70$'_|__'

Modella la stringa a destra in una forma 10 per 70. Semplice!


18

BBC BASIC, 28 byte

Dimensione file con token 23 byte.

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

WIDTH70sarebbe normalmente seguito da una nuova riga. Imposta la larghezza del campo su 70. Quindi stampiamo solo 175 copie della stringa, che avvolgono.


2
Il migliore (ab) uso di LARGHEZZA che ho visto :)
ElPedro

Quindi dovrebbero essere presenti "23 byte" nell'intestazione.
Adám,

@Adám Solo se la versione tokenizzata è pubblicata come risposta.
ErikE

17

Brainfuck, 171 byte

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

Brainfuck è divertente, ecco la mia presentazione.

Ecco l'output:

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

Ecco un link per provarlo

https://repl.it/EW2Z/0


16

WinDbg, 45 byte

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

Come funziona:

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)

Produzione:

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 byte

Codice:

jcT*175"_|__

Spiegazione:

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

Provalo qui .


10

Python 2, 37 byte

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

Scompone due righe come 17 copie di _|__, più un'altra copia interrotta da una nuova riga, più altre 17 copie, più un'altra nuova riga.

Alternative più lunghe:

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("_|__"))

La tua ultima alternativa è più breve come print(("%s"*70+"\n")*10%(175*(*"_|__",)))in Python 3.
mbomb007

8

05AB1E , 13 byte

Codice:

"_|__"175×Tä»

Spiegazione:

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

Utilizza la codifica CP-1252 . Provalo online!


7

PHP, 44 42 41 caratteri

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

(Solo perché non avevo possibilità di usarlo chunk_split()mai prima d'ora.)

Grazie a:

  • user59178 per aver suggerito di usare str_pad()(-1 carattere)

Esecuzione di esempio:

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

byte, non conteggio caratteri.
FivePixels,

2
Stesso. Non uso caratteri multibyte.
arte


2
@pajonk, risolto con PPCG - Ho
cancellato

Puoi salvare un byte usando str_padinvece di str_repeat, in gran parte perché _viene trattato come una costante con valore _.
user59178

7

Vim, 30 24 19 sequenze di tasti

18a___|<esc>YP2x}h.yk4P

Grazie a DrMcMoylex e nmjcman101 per aver salvato sequenze di tasti importanti!


1
Bella risposta, benvenuta nel sito! Alcuni consigli: 1) aprende un conteggio, quindi potresti fare 18a___|<esc>invece di fare la macro. 2) <cr>in modalità normale equivale a j0, quindi potresti togliere un byte dalla tua seconda macro.
DJMcMayhem

Bene, grazie per i suggerimenti!
karpfen,

1
Ho golfato la tua soluzione un po 'per divertimento. La formattazione del muro prima di copiare / incollare salva tutti i byte di non creare una macro: 18a___|<esc>YP2x}h.yk5Pè di 19 byte.
nmjcman101,

Bene, aggiornerò la risposta! Sostituirò solo la penultima chiave con 4, altrimenti il ​​muro sta diventando troppo alto :)
karpfen

6

Perl, 47 34 29 byte

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

Puoi giocare a golf fino al 29:say for("_|__"x175)=~/.{70}/g
Dada

Per qualche motivo, questo non produceva output ogni volta che lo provavo, ma trovai un'altra soluzione in altrettanti byte. Grazie comunque!
Gabriel Benamy,

Bene, il codice che ho suggerito produce un output valido ... Forse hai dimenticato la parentesi "_|__"x175o qualcosa del genere?
Dada,

Penso che sia quello che è. Pensavo che le parentesi
dovessero

Huhu, difficile ricordare la precedenza di ogni operatore ( =~ha una precedenza più alta di x)!
Dada,

5

Perl, 31 byte

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

Avrai bisogno di -Eflag per eseguirlo:

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

Pensato ad un approccio leggermente diverso per 29 byte: say for("_|__"x175)=~/.{70}/g:). Mi piace il trucco che hai impiegato lì!
Dom Hastings,

@DomHastings huhu, ho scritto lo stesso identico codice nei commenti della risposta di Gabriel Benamy!
Dada,

D'oh! Non l'ho visto! Inoltre ho visto che è stato usato molto in altre risposte .. Oh bene!
Dom Hastings,

@DomHastings Sì, all'inizio non ci avevo pensato, ed era già nella risposta di Gabriel, quindi è per questo che non ho aggiornato la mia risposta dopo;)
Dada

5

V , 24 , 16 byte

175i_|__ò70|lé

Provalo online! Questo contiene <esc>caratteri ( 0x1B) quindi ecco un hexdump:

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

8 byte salvati indirettamente grazie alla Giordania!


19 byte: v.tryitonline.net/… Non sono riuscito a capire come usare il .\{-}collegamento menzionato nei V documenti .
Giordania,

@Jordan Wow, molto gentile! Il \{-}collegamento non funzionerebbe comunque, poiché non è possibile modificare il numero all'interno. Tuttavia, è possibile impostare il bit più alto su \{per ottenere questo invece. Sentiti libero di postarlo come risposta.
DJMcMayhem

Ah, ha senso. Pubblicato qui: codegolf.stackexchange.com/a/99070/11261
Giordania

Dannazione, devo ancora parlare di questa lingua: 25 byte
statox,

5

V , 18 byte

-1 byte grazie a DJMcMayhem.

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

Eccolo con caratteri non stampabili in formato xxd:

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

Provalo online!


Bene, non sono più l'unica persona che ha usato V! Ora dovrò vedere se riesco a riprendere il comando, haha
DJMcMayhem

5

MATL, 15 byte

'_|__'700:)70e!

Certo, puoi provarlo online! Spiegazione:

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

OK, in realtà, funziona come segue:

'_|__' % 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.

Molto bene! E la tua faccina è migliore della mia
Luis Mendo,

@LuisMendo In realtà, l'utilizzo di emoticon potrebbe essere considerato un modello di progettazione in MATL. xD Forse si potrebbe avere :)su C... ma sarebbe stato il tuo ultimo 1 byte code point andato (o c'è un altro motivo per Cnon viene utilizzato?)
Sanchises

Vuoi sbarazzarti della faccina ?? :-P
Luis Mendo,

5

Python 2, 46 44 byte

Basta usare la moltiplicazione delle stringhe per costruire la stringa e tagliare per ottenere i bit giusti :)

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

grazie ad Antony Hatchkins per aver salvato due byte :)


Potrebbe essere di 2 byte in meno:print'\n'.join([k[:70],k[2:]]*5)
Antony Hatchkins il

@AntonyHatchkins Grazie!
Kade,

4

PowerShell v2 +, 34 30 byte

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

Stupido algoritmo di regex che richiede -ne''... spreca cinque byte!

'_|__'*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

4 byte salvati grazie a Conor!


Sarebbe .{70}più breve per il regex?
Conor O'Brien,

splitfunziona così in altre lingue: ottieni sempre le porzioni senza pari, che tu le voglia o no. Alcune lingue hanno un matchoperatore che può essere usato per restituire una matrice di soli risultati corrispondenti, ma non vedo un equivalente di PowerShell per quello.
Neil,

@Neil Performing 'abc'-split'(.)'tornerà ('','a','','b','','c',''). Non c'è nulla di ineguagliato, ma a causa del modo in cui l'algoritmo elabora attraverso la stringa di input, si ottengono indietro stringhe vuote. Vedi qui .
AdmBorkBork,

Sì, e sto dicendo che non dovresti essere sorpreso da quel risultato, perché è quello che dovrebbe fare Split.
Neil,

@Neil sorpreso? No, non proprio. Non significa che devo esserne felice, comunque. : D
AdmBorkBork,

4

C, 131 115 113 103 97 95 byte

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

È ora di iniziare a giocare a golf ...

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

3

Gelatina , 14 byte

“_|__”ṁ700s70Y

TryItOnline!

Come?

“_|__”ṁ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
Per definizione, Jelly non può essere più lunga di J.
Adám,

Ho fatto qualcosa di simile senza il particolare : “_|__”ẋ175œs⁵Y(14 byte)
Erik the Outgolfer,



3

Javascript REPL, 45 byte

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

1
Benvenuti in PPCG! Deve essere contrassegnato come "REPL JavaScript" o simile, poiché non stampa nulla al di fuori di un ambiente di console interattiva.
Martin Ender,

1
Non sono 45 byte?
acrolith

@daHugLenny hai ragione, ho contato \ n come un singolo byte
Juan Tonina

dov'è console.log?
Cardeol,

1
Finché stai usando ES6 (penso che lo sia) puoi usare stringhe di template, quindi join("\n")diventa join <backtick> <letterale newline> <backtick>
Stephen

3

JavaScript (ES6), 48 byte

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

Perché ricorsione.


3

Bash, 44, 41 , 40 byte

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

La stampa rende lunga una riga di 700 caratteri, egrep corrisponde a 70 caratteri alla volta.




2

Pyke, 12 byte

w�"_|__"*TfX

dov'è il byte letterale 163.

Provalo qui! ( w�sostituito con letterale)


2

Rubino, 30 byte

Grazie a manatwork per questa soluzione

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

Rubino, 39 byte

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

2
L'approccio generate-tutto-allora-split è più breve anche qui: puts ("_|__"*175).scan /.{70}/.
arte

@manatwork grazie mille! Raramente penso di usare scancome non mi sento a mio agio con le regex. Sai che avresti potuto postarlo come risposta personale ...
Level River St

2

Haskell, 56 47 byte

unlines$[1..5]>>take 70.cycle<$>["_|__","___|"]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.