Molti utenti di PPCG hanno contribuito alla creazione di questa sfida, sia nella chat che nel Sandbox, in particolare Martin Ender , AdmBorkBork , Emigna e user202729
La nostra comunità ha ritenuto necessario creare un insieme di lingue progettate appositamente per il golf, le "lingue del golf" come le chiamiamo noi. Tali linguaggi si sono evoluti dal GolfScript un tempo brillante, ora goffo, a linguaggi concisi ed eleganti come Jelly e Husk . Come possiamo vedere, queste lingue diventano continuamente sempre più brevi per una serie di attività. Quindi, come ovvi esperti qui intorno riguardo alle lingue del golf, dovremmo progettare una lingua insieme per battere ogni altra lingua che osa competere. Presentazione di Bugle!
Bugle: Da l'acronimo BuGoL: Bu ILT Vai lfing L anguage.
Come funzionerà questa sfida
Nel caso in cui tu non abbia ottenuto ciò a cui alludo nell'introduzione, questa sfida è una sfida incatenata alla risposta in cui ognuno di noi contribuisce con qualcosa all'interprete di un nuovo linguaggio del golf, migliorando la sua capacità di competere su PPCG con ogni risposta.
Pubblicherò la prima risposta consistente sulla base della specifica / interprete della lingua, e tutte le altre risposte continueranno da quella. I nuovi invii forniranno le seguenti cose:
- Una modifica alle specifiche della lingua
- Un interprete aggiornato, che incontra esattamente ciò che è disposto nelle modifiche
- Il punteggio aggiornato della lingua (maggiori dettagli tra poco)
Puoi modificare le specifiche in tre modi:
- È possibile aggiungere un singolo comando
- È possibile aggiungere due nuovi comandi
- È possibile modificare il comportamento di un comando esistente
Per quanto riguarda il nuovo interprete, è necessario utilizzare l'ultima versione, scritta in Python. Non deve essere giocato a golf. Ogni comando precedentemente aggiunto deve essere testabile con l'ultimo interprete, nonché i comandi più recenti (quello che aggiungi). Inoltre, non è necessario utilizzare un linguaggio offensivo in nessun momento durante l'aggiornamento dell'interprete, ad esempio nei commenti, nei letterali di stringa ecc.
I comandi aggiunti possono fare tutto ciò che desideri . Gli unici requisiti sono:
- Non produce un output offensivo
- Non è lo stesso di un altro comando
- Non impedisce il completamento di una delle sfide del campione
A parte questi, può essere specifico o generale come desideri. Può anche essere qualsiasi personaggio tu voglia. Se non sei sicuro che la tua aggiunta costituisca un "nuovo comando", sentiti libero di chiedere nei commenti.
Il punteggio della lingua
Potresti aver notato che devi includere il punteggio della lingua in tutti i nuovi invii. Il suo punteggio è ciò che impedisce che questa sfida vada per sempre, ed è definito come segue:
Il punteggio corrente è la somma dei conteggi dei byte necessari affinché la lingua completi i 20 compiti seguenti
Per ciascuna attività, si applicano le regole I / O standard , così come le scappatoie standard .
I 20 compiti:
- "Ciao mondo!" - Emette la stringa
Hello, World!
- 1, 2, Fizz, 4, Buzz : emette un numero intero compreso tra 1 e 100 (incluso) su una riga separata, con multipli di 3 sostituiti da
Fizz
, multipli di 5 sostituiti daBuzz
e multipli di entrambi conFizzBuzz
- Produci il numero 2014 senza numeri nel codice sorgente - Emetti il numero 2014 senza utilizzare nessuno dei caratteri
0123456789
nel codice sorgente, senza accedere a variabili esterne o seed casuali - Obfuscated Ciao Mondo - Uscita la stringa
Hello, World!
, senza l'utilizzo di uno qualsiasi dei caratteri in almeno due dei seguenti gruppi:hlwd
,eor01
e27
(case-insensitive) Canta Happy Birthday al tuo linguaggio di programmazione preferito - In una lingua a tua scelta, dai il seguente risultato:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Non siamo estranei al codice del golf, conosci le regole, e anche io - Emetto il testo completo di "Never Gonna Give You Up"
- Emette il segno - Dato un numero, stampa -1 se è negativo, 0 se è 0 o 1 se è positivo
- Congettura di Collatz (OEIS A006577) - Partendo da un numero intero, dividerlo per 2 se è pari, o moltiplicarlo per 3 e aggiungere 1 se è dispari, e ripetere il processo fino a raggiungere 1. L'output dovrebbe essere il numero di iterazioni ti porta a raggiungere 1.
- An Array of Challenges # 1: Array alternati - Dato un array di numeri interi, controlla se tutti gli oggetti con indicizzazione pari sono uguali e tutti gli oggetti con indicizzazione dispari sono uguali e genera un valore di verità o falsa di conseguenza
- Sono un array insignificante? - Dato un array di numeri interi, controlla se le differenze assolute tra elementi consecutivi sono tutte minori o uguali a 1 e genera un valore di verità o falsa di conseguenza
- Questo numero è un numero primo? - Dato un numero intero positivo, scrivi un programma completo per verificare se è primo e genera un valore di verità o falsa di conseguenza
- Sono un palindromo. Tu sei? - Dato una stringa, controlla se è palindromo, mentre anche il tuo programma / funzione è palindromo e genera di conseguenza due valori distinti e coerenti
- Somma i numeri sullo standard in - Prendi una serie di numeri da STDIN e genera la loro somma.
- Trova il fattoriale - Dato un numero intero
n
, genera il prodotto di tutti i numeri interi compresi1
en
compresi. - Codice più breve per produrre output infinito - Senza alcun input, produce output infinito, che teoricamente non smetterà mai di emettere.
- Prepara una fetta di Pi - Stampa questo testo esatto:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- Trova il numero più piccolo che non divide N - Dato un numero intero positivo N, genera il numero intero più piccolo positivo che non divide N
- È pari o dispari? - Dato un numero intero N, genera la sua parità come valori di verità / falsità.
- Output con la stessa lunghezza del codice - Scrivi il codice più breve il cui output ha la stessa lunghezza del codice, dove l'output non è uguale al codice.
- Golf te a quine per il bene! - Scrivi il quine più corto nella tua lingua.
Per essere valido, un nuovo invio deve disporre di invii golfizzati per almeno 2 dei problemi, di almeno 1 byte per ciascuno. Puoi aumentare la durata di altri invii, ma il punteggio totale deve diminuire di almeno 2 per risposta. Inoltre, considera di includere un link ai programmi aggiornati. Le soluzioni aggiornate non devono funzionare se eseguite con una versione precedente dell'interprete.
Come ottenere i cookie
Ho un elenco di 5 sfide, che non sono obbligatorie da tentare e non influiscono sul tuo punteggio, ma sono semplicemente sfide aggiuntive da testare se Bugle è abbastanza capace. Sentiti libero di includere una soluzione a qualsiasi numero di questi nella tua risposta:
- Crea un interprete personale
- Crea un quine capace di payload
- Covfefify una stringa
- Iperprogrammazione: N + N, N × N, N ^ N tutto in uno
- "Nodo" o "NON"?
Descrizioni non incluse in quanto non sono necessarie per consentire a tutti di competere nella sfida.
Come vincere
Una volta raggiunto il punteggio minimo ( riteniamo essere 16, anche se ogni tentativo di giocare a golf che è molto apprezzato) è stato raggiunto, ovviamente la catena è terminata poiché le soluzioni non possono ottenere un punteggio migliore. Una volta raggiunti i 16 anni, la sfida rimane viva per 1 mese dopo, per dare a chiunque la possibilità di giocare a golf con le soluzioni. Trascorso questo mese, la sfida è finita.
Una volta terminata la sfida, eseguirò la migrazione dell'interprete in un repository GitHub e passerò attraverso le solite macchinazioni di rilascio di un linguaggio stabile. Puoi anche iniziare a pubblicare soluzioni alle sfide su PPCG in questo momento, usando il linguaggio detto, ma per favore cerca di non inondare la prima pagina di risposte. Invece, distribuiscili su un periodo di tempo.
Formattazione
Per facilitare la ricerca delle informazioni nella risposta, si prega di formattare come segue:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
Dov'è il [N]
tuo numero di risposta (1 per il primo, 2 per il secondo ecc.)
Regole
- Devi aspettare 3 ore tra la pubblicazione delle risposte
- Non puoi pubblicare due volte di seguito, a meno che non sia stata inviata una risposta per 10 giorni (esattamente 240 ore)
- Non è possibile rimuovere i comandi precedenti.
- Il tuo interprete non deve essere giocato a golf, e il suo conteggio dei byte è completamente irrilevante qui.
- Se qualcuno suggerisce un golf ai programmi mentre la tua risposta è l'ultima, devi modificarlo nei golf e aggiornare il tuo punteggio.
- Puoi anche farlo quando la tua risposta è al centro della catena, purché il tuo punteggio non diventi più basso di qualsiasi risposta successiva.
- Si prega di astenersi dal rispondere a qualsiasi sfida PPCG esistente utilizzando questo linguaggio, almeno fino a quando la sfida non sarà terminata
- L'interprete è scritto in Python 3 e dovrebbe continuare così in tutta la catena. È vietato cambiare la lingua.
- Anche in questo caso, per essere valido, un nuovo invio deve avere invii golfati per almeno 2 dei problemi, di almeno 1 byte per ciascuno.
Iniziamo!
Hello, World!
, allora è di 19 byte. Ma se cambia il comportamento del programma vuoto, a seconda dell'input, potrebbe essere possibile ridurlo
for
loop) sono consentiti e incoraggiati ad essere aggiunti