Emette un "splat" ASCII


10

Se lanci un uovo ASCII in una determinata direzione, finisci con uno splat ASCII di dimensione n . "Inizia" con uno o(il tuorlo) e continua in una data direzione con "linee" costituite da 2 fino a n * 's. Gli *"sono" separati da uno "spazio", e otutti e le "linee" di *"sono" separate da "linee" di "spazio".

La direzione dello splat può essere una delle otto direzioni da o, ad esempio:

1 2 3
4 o 5
6 7 8

Ecco alcuni esempi di simboli ASCII di dimensioni 4 in direzioni 5, 2e 3rispettivamente. Sulla sinistra è il simbolo ASCII effettivo, e sulla destra è la stessa splat ma con le "linee" di "spazio" sostituito con "linee" reali (cioè -o \oppure |a seconda della direzione) solo chiarire cosa si intende per un "linea" di spazio.

Size 4, direction 5
      *      | | |*
    *        | |*| 
  *   *      |*| |*
o   *       o| |*| 
  *   *      |*| |*
    *        | |*| 
      *      | | |*

Size 4, direction 2
* * * *     * * * *
            -------
 * * *       * * *
            -------
  * *         * *
            -------
   o           o

Size 4, direction 3   
*           *      
            \
* *         *\*    
            \ \
* * *       *\*\*
            \ \ \ 
o * * *     o\*\*\*

Sfida

Dato n ≥ 1 e una delle 8 direzioni possibili, scrivere una funzione o un programma che emetta lo splat ASCII di dimensione n nella direzione data.

Ingresso e uscita

È consentito qualsiasi formato di input coerente e ragionevole. Non è necessario mappare le indicazioni per gli interi da 1 a 8 nello stesso modo in cui ho fatto - se un altro modo di specificare la direzione è più semplice, andare avanti. Ma dì cosa hai fatto se non è chiaro.

L'uscita consisterà o, *spazi (U + 0020) e ritorni a capo (U + 000A) che producono lo splat ASCII. Sono consentiti spazi iniziali, finali, altrimenti spazi bianchi su qualsiasi linea.

Regole

Questo è . Si applicano le regole standard.

Più esempi

Size 1, any direction
o

Size 3, direction 6
* * o

  * *

    *

Size 5, direction 7
    o    

   * *

  * * *

 * * * *

* * * * *

Risposte:


3

Carbone , 20 18 byte

↘EN×*⊕ιM↗oUE¬﹪η²⟲η

Provalo online! Il collegamento è alla versione dettagliata del codice. Spiegazione:

↘EN×*⊕ι

Disegna un triangolo diagonale di simboli.

M↗o

Metti l'uovo.

UE¬﹪η²

Per rotazioni uniformi, espandere lo splat in senso orizzontale per soddisfare i requisiti di output. Questo requisito non corrisponde alle normali aspettative di Charcoal. Provalo online! (dettagliato) per come appare senza.

⟲η

Ruota lo splat come richiesto, usando il seguente codice per le indicazioni:

321
4o0
567

Questa versione a 31 byte da 37 evita spazi bianchi estranei ruotando solo ad angolo retto:

¿﹪η²G↘←θ*«↘Eθ×*⊕ι↗»oUE¹﹪η²⟲⊗÷η²

Provalo online! Il collegamento è alla versione dettagliata del codice.


2

Gelatina , 37 byte

”*ẋK¥ⱮmṠ©}”oḷ""LḶ⁶ẋƲ;"ṚƊ®¡z⁶K€ZU$A}¡Y

Provalo online!

Indicazioni:

[12345678][21342134]


1

Python 2 , 185 byte

lambda n,d:'\n'.join(g([(d/4*(n+~j)*' '+('*o'[[j>n-2,j<1][d/4]]+' *'*j)*i).ljust(2*n-1)for j in range(n)for i in(0,1)][1:],d%4))
g=lambda a,n:n and g(map(''.join,zip(*a))[::-1],n-1)or a

Provalo online!

La numerazione va da 0 a 7, come segue:

1 6 0
7 o 5
2 4 3

Note: La maggior parte del lavoro consiste nel generare i modelli di base per (nel mio sistema di numerazione) 0e 4. Quindi la funzione gruota l'array di a90 gradi d%4volte tramite ricorsione per generare gli altri risultati.

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.