Mangia la barretta di cioccolato


11

Ho una barretta di cioccolato e ho bisogno di aiuto per mangiarla, quindi dovrai scrivere un programma solo per farlo.

Spiegazione

La prima riga è l'input. Gli esempi sono separati da una riga vuota.

7
   ____
 __|__|
|__|__|
|__|__|
|__|__|

6
_______
|__|__|
|__|__|
|__|__|

5
   ____
 __|__|
|__|__|
|__|__|

0


1
   ____
   |__|

Spec

Speriamo che gli esempi specifichino chiaramente questa sfida ma per evitare ogni possibile confusione, ecco una specifica:

Puoi avere un unico spazio bianco finale / iniziale opzionale

Un input di 0è un output vuoto.

Se l'input è pari, le prime righe appaiono come:

_______
|__|__|

Se è dispari, la riga superiore è:

   ____
   |__|

Se è dispari e maggiore di 1, le prime righe sono:

  ____
__|__|

Le seguenti righe sono:

|__|__|

fino a quando il numero di istanze di |__|è uguale all'input


Qual è l'output per l'input 1? È 0necessario supportare l' input di necessità?
Maniglia della porta

@Doorknob sì, ho aggiornato la sfida
Downgoat

1. Possiamo inviare una funzione? 2. Possiamo prendere input dagli argomenti STDIN / function? 3. Dobbiamo produrre UNA o TUTTE le iterazioni?
yyny,

@YoYoYonnY sì, per impostazione predefinita puoi (questo link risponde anche alla tua seconda domanda) . Non sono sicuro di cosa intendi per iterazioni. Dai un'occhiata agli esempi, è tutto ciò che devi produrre
Downgoat

Sono consentite le righe vuote iniziali?
Neil,

Risposte:



4

Haskell, 101 byte

Haskell non è mai stato eccezionale per giocare a golf con il codice ...

b="\n|__|__|"
h="   ____\n "
f 1=h++"  |__|"
f 2="_______"++b
f 3=h++"__|__|"++b
f n=f(n-2)++b
f _=""

Dipende da come lo guardi. Java> Python> Haskell> GolfLang. Uso python;)
J Atkin,

@JAtkin Bene, guarda la mia risposta PHP , poi vedi cosa c'è di peggio
timmyRS

3

JavaScript ES6, 80 byte

x=>(x%2?`   ____
 ${x<2?"  ":"__"}|__|`:x?"_______":"")+`
|__|__|`.repeat(x/2)

Utilizza la stessa tecnica della mia risposta di Japt e sorprendentemente non è molto più lungo ...


1

C, 104 102 byte

f(x){x?x%2?printf("   ____\n%3s|__|\n",x<2?"":"__"):puts("_______"):0;for(x/=2;x>0;x--)puts("|__|__|");}

Forse posso usare qualche trucco di printf per migliorare questo ...
Apparentemente posso


1

𝔼𝕊𝕄𝕚𝕟, 53 caratteri / 67 byte

ï%2?`   ⟮__⟯Ⅰ
 ⦃ï<2?⍞  :⍞Ⅰ⦄|Ⅰ|`:ï?⍘_ď7:⬯⦄
|Ⅰ|Ⅰ|`ď ï/2

Try it here (Firefox only).

Questo è abbastanza simile alla risposta Javascript ES6, anche se l'ho trovata in modo indipendente. Spiegazione a venire quando finirò di giocare a golf.


1

PHP, 134 caratteri

<?$i=$argv[1];if($i>0){echo($i%2===0?"_______\n|__":"   ____\n".($i>1?"___":"   "))."|__|\n";echo str_repeat("|__|__|\n",($i-1)/2);}?>

Appunti:

  • PHP non è stato creato per il golf del codice
  • Sicuramente mi sono divertito a creare questo frammento
  • Genera un errore se argv non è definito
  • Qualsiasi aiuto per abbreviarlo è apprezzato.


1

Japt, 60 57 byte

U%2?[S³'_²²RSU¥1?S²:'_²"|__|"]¬:U?'_p7 :P +"
|__|__|"pU/2

Solo una risposta di base. Probabilmente può essere migliorato. Provalo online!

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.