Questa è la mia testa:
\ /-- -|
/ -\ | | |
\ \ \ \ |
--\ | \ | |
/ |--| / / |
/|- //--| / |
| | || //\ |
| \ /| // \ |
Si compone esattamente di otto peli. I miei capelli sono troppo lunghi. Si prega di tagliare ogni singolo filo ad una lunghezza che specifico.
Ingresso
L'attrazione principale in questa sezione è la vera capigliatura. Ecco una rappresentazione grafica con codice colore, insieme a un'animazione , per i pigri:

Ed ecco una specifica completa per ciò che è un set di capelli:
- I singoli peli, che chiameremo trefoli , saranno realizzati i
/,\,|e-caratteri ASCII, ormai noto come atomi . - L'intero head of hear (tutti i trefoli combinati) saranno
ccolonne perrrighe, dovec≥ 1 er≥ 2. - Ogni filo sarà ...
- inizia dall'ultima riga della testa (riga
r- 1). - avere una lunghezza
ldovel≥ 2.
- inizia dall'ultima riga della testa (riga
- I fili possono essere analizzati con il seguente metodo:
- Inizia dalla parte inferiore del filo. Questo sarà un
/,|o\atomo, che chiameremo la radice . (I fili vengono analizzati da sinistra a destra, ordinati per radice.) - Trova l'atomo che punta verso la radice.
- Un
|atomo punta su e giù. Un-atomo punta a destra e sinistra (ma non può mai puntare alla radice poiché solo le radici possono trovarsi nella riga inferiore). Un/atomo punta verso sinistra e verso l'alto e un\atomo fa il contrario. - Ci sarà sempre esattamente un atomo che punta verso l'atomo di radice.
- Un
- Trova un atomo inutilizzato (uno che non fa ancora parte di alcun filamento) che punta verso questo atomo e non è nemmeno al di sotto di questo atomo (i capelli non possono crescere verso il basso, ma lateralmente va bene).
- Se ci sono zero, hai raggiunto la fine del filo!
- Se ce n'è uno, questo è l'atomo successivo del filo. Ripeti il passaggio 3 con questo atomo. (Questo atomo è ora contrassegnato come "usato" ai fini del passaggio 3, poiché fa parte di un filo.)
- Non ci saranno mai più atomi inutilizzati qui in nessun punto della testa.
- Inizia dalla parte inferiore del filo. Questo sarà un
Il formato di input sarà:
- Una chioma. Può essere inserito così com'è (input multilinea con newline letterali) o con un delimitatore di tua scelta al posto delle newline. Nota che la testa sarà sempre un rettangolo; vale a dire che gli spazi bianchi finali verranno aggiunti se necessario (lo strano pelo della linea retta sulla destra è solo per eliminare gli spazi bianchi finali aggiuntivi per evitare confusione).
- Un numero ≥ 1 che specifica la quantità di capelli da tagliare. Questo sarà descritto in dettaglio nella prossima sezione.
È possibile accettare input per una funzione, utilizzare STDIN / STDOUT, ecc. (Qualsiasi cosa ragionevole ).
Produzione
Il risultato sarà la chioma con il taglio di capelli applicato. Per dare un taglio di capelli, è sufficiente ridurre la lunghezza di ogni ciocca di capelli della quantità specificata (che sarà sempre 1 o maggiore), a partire dall'estremità del capello che si sposta verso la radice. Tuttavia, lascia sempre intatta la radice!
Ecco un semplice esempio. Dire che l'ingresso per la testa è
\
/
|
|
Con un secondo input di 2, taglieresti due atomi dal filamento e ne otterrai un risultato
|
|
E con un input di 42, l'output sarebbe semplicemente
|
Si noti che gli spazi bianchi prima e dopo la testa sono completamente irrilevanti; puoi tagliare nuove righe o aggiungere più imbottitura. Non importa, finché la testa rimane intatta. (Puoi fare quello che vuoi anche con gli spazi bianchi finali).
Casi test
Per tutti i casi di test, verrà utilizzato l'esempio presentato all'inizio di questo post.
Lunghezza taglio capelli = 1:
/- |
/ \ | |
\ \ \ \ |
--\ | \ | |
/ |-- / / |
|- //--| / |
| | || // |
| \ /| // \ |
Lunghezza di 3:
|
\ |
--\ | \ |
/ |-- / / |
|- // | / |
| || // |
| \ /| // \ |
Lunghezza di 7:
|- / |
| | / |
| \ /| // \ |
Lunghezza del 1337:
| \ /| // \ |
punteggio
Questo è code-golf , quindi vincerà il codice più breve in byte!
-terza fila da sinistra indica |la quarta fila da sinistra
-, non quello a cui punta . Ad esempio, il |non punta al /nel primo filamento, ma è indicato dal /. (Sì, lo so che è confuso; ho dovuto rifare la GIF più volte perché ho confuso anche me stesso!) Un modo più semplice per capire questo potrebbe essere solo quello di guardare in cima al secondo filone.
-dovrebbe essere unito al quarto filamento, non al terzo.