CAPL 1.5+; 6 senza input; 10 - 10 = 0 con input
Sidenote
Ho letto da qualche parte [link?] Che le lingue personalizzate non sono consentite nelle domande sul golf, in quanto potrebbero creare funzioni integrate che fanno esattamente ciò che la domanda pone, tuttavia ho reso CAPL più semplice per giocare a golf in generale . Se pensi che questo non sia consentito qui, fammi sapere!
Ho avuto alcune idee da > <> e Befunge (puoi muoverti tra le righe e usare caratteri esadecimali per spingere i numeri), alcuni da Ruby e alcuni dai miei per rendere più facile il golf.
CAPL legge da sinistra a destra e scende di una riga alla fine della riga. Se è come ultima riga, il programma verrà chiuso.
Dato che nessuno conosce ancora questa lingua, cercherò di spiegare il più possibile.
In uscita y. 6 byte
bb*.n<
bb*
b
è esadecimale per 11
, quindi bb*
è 11*11
= 121
, che è l'equivalente UTF-8 di y
. Questo valore viene inserito nello stack.
.
Estrae il valore più alto dallo stack e genera come UTF-8. Come 121
è in cima allo stack, l'indice viene ignorato qui.
n
Emette una nuova riga Riporta
<
il puntatore all'inizio della riga, ripetendo così quella riga. Poiché non prevediamo input, possiamo farlo in modo sicuro senza richiedere nuovamente l'input.
Uscita da input. 10 byte, 0 dopo il bonus
i~a&{X:.)}
i
Riceve input dall'utente, inserisce UTF-8 nella parte superiore dello stack e successivamente ne inserisce la lunghezza. Cioè [72,101,108,108,111,5]
~
estrae un numero dallo stack, quindi inverte quella quantità di byte. [111,108,108,101,72]
a
Vale a dire esadecimale per 10
, il personaggio newline
&{...}
crea un ciclo infinito. Abbiamo input, quindi non possiamo inviare il puntatore alla riga. Potrei posizionare la funzione sulla riga in basso, il che mi metterebbe in salvo un byte, ma i newline non sono ammessi in questa sfida.
X
Rimuove il valore superiore dallo stack (l'indice dal loop)
:.
Duplica il valore superiore, quindi viene emesso come UTF-8
)
Ruota lo stack a destra. ( [1,2,3,4,5]
-> [5,1,2,3,4]
)
Tuttavia, questo significa che iniziamo con una nuova riga, quindi iniziamo a presentare l'input, quindi una nuova riga, quindi l'input, ecc. Se non ci è permesso iniziare con una nuova riga, utilizzare il seguente codice con 12 byte o 2 dopo la sottrazione il bonus.
iXa#~&{X:.)}
L'unico nuovo comando qui è #
, che spinge la quantità di oggetti nella pila nella pila.
Ho rimosso la lunghezza da i
, perché l'aggiunta di 1, quindi lo scambio con la nuova riga è più lungo della rimozione e del recupero della lunghezza.
Solo per divertimento, ecco un programma "Hello World"
"Hello World"#~
#?!;.<
L' ?!
operazione è uguale a> <>
y
o\n
dentro una stringa letterale"?