Sfida
Data una stringa come input, golf giù il programma di Fourier che emette quella stringa.
In Fourier non esiste un modo semplice per generare una stringa: devi passare attraverso ogni codice carattere e inviarlo come carattere.
Fourier
La lingua si basa su un accumulatore, una variabile globale che viene inizializzata su 0 all'inizio del programma. Questo è usato da quasi tutti gli operatori nella lingua. Solo alcuni non modificano il valore dell'accumulatore.
Carattere fuori
a
Prende il valore dell'accumulatore come codice ASCII e genera il carattere. Non cambia il valore dell'accumulatore.
Se l'accumulatore è maggiore di 255, il programma restituirà un errore. Allo stesso modo se l'accumulatore è inferiore a 0.
Numero fuori
o
Emette il valore dell'accumulatore. Non cambia il valore dell'accumulatore.
Aumentare
^
Aumenta l'accumulatore di uno.
Diminuire
v
Ridurre l'accumulatore di uno.
Inserisci
+x
Imposta l'accumulatore sul valore dell'accumulatore più il valore di x.
Sottrarre
-x
Imposta l'accumulatore sul valore dell'accumulatore meno il valore di x.
Moltiplicare
*x
Imposta l'accumulatore sul valore dell'accumulatore moltiplicato per il valore di x.
Dividere
/x
Imposta l'accumulatore sul valore dell'accumulatore diviso per il valore di x. (Nota che questa è una divisione intera, quindi 1/6
risulta 0
)
Numero
n
Impostare l'accumulatore sull'intero n.
Nota
Qui, x
e n
può essere qualsiasi numero intero da 0
a 2^32-1
compreso.
Maggiori informazioni
È necessario utilizzare solo gli operatori sopra descritti. Pertanto, il programma di Fourier in uscita non è valido se utilizza uno dei seguenti (tenere presente che i seguenti operatori sono ammessi per la taglia):
- Ripeti i cicli
- Se dichiarazioni
- variabili
- Casuale
- Modulo
- Input dell'utente
- Maggiore / inferiore rispetto agli operatori
- Operatori di uguaglianza
- Schermo pulito
- Ritardo
- Funzioni data
Il tuo programma può essere un programma completo o una funzione, prendendo in input tramite STDIN, un file o argomenti di funzione. Puoi anche ricevere input direttamente da Internet.
Si noti che se vv
nel codice è presente un codice, è necessario sostituirlo con -2
. Lo stesso vale per ^^
, sostituendolo con+2
.
Esempi
Se l'ingresso è 7n
, quindi il programma previsto è:
55a110a
Ma puoi salvare un byte con
55a*2a
Un altro modo è
7o110a
Usando il numero fuori.
Allo stesso modo se l'input è Hello
, il programma previsto è:
72a101a108a108a111a
Puoi giocare a golf di 3 byte (perché l'output non cambia l'accumulatore):
72a101a108aa111a
Ma aspetta, possiamo usare l'operatore addizione, risparmiando 2 byte:
72a101a+7aa+3a
Formattazione
Poiché userò la classifica dello Stack Snippet di Martin Büttner, per favore potresti formattare il titolo in questo modo:
# <Language name>, <length of total output> bytes
Quindi, puoi mettere tutto ciò che desideri sotto il titolo.
vincente
Dovresti pubblicare la lunghezza dei programmi di Fourier (prodotti dal tuo codice) per produrre questo file di testo e questo file di testo . Il tuo punteggio è la lunghezza combinata di entrambi i programmi di Fourier in byte (i caratteri non ASCII non sono usati in Fourier, quindi non fa davvero la differenza).
Vince la persona con il punteggio più basso. Se c'è un pareggio, vince il programma più breve in byte.
generosità
Questa ricompensa da 500 rappresentanti è per una nuova risposta che gioca a golf sulle corde usando una qualsiasi delle funzioni di Fourier. Ciò include variabili, loop e istruzioni if, ecc. Questa nuova risposta non sarà accettata.
Classifica
Fare riferimento alla sezione di formattazione sopra:
var QUESTION_ID=55384;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),e.has_more?getAnswers():process()}})}function shouldHaveHeading(e){var a=!1,r=e.body_markdown.split("\n");try{a|=/^#/.test(e.body_markdown),a|=["-","="].indexOf(r[1][0])>-1,a&=LANGUAGE_REG.test(e.body_markdown)}catch(n){}return a}function shouldHaveScore(e){var a=!1;try{a|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(r){}return a}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading),answers.sort(function(e,a){var r=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0],n=+(a.body_markdown.split("\n")[0].match(SIZE_REG)||[1/0])[0];return r-n});var e={},a=1,r=null,n=1;answers.forEach(function(s){var t=s.body_markdown.split("\n")[0],o=jQuery("#answer-template").html(),l=(t.match(NUMBER_REG)[0],(t.match(SIZE_REG)||[0])[0]),c=t.match(LANGUAGE_REG)[1],i=getAuthorName(s);l!=r&&(n=a),r=l,++a,o=o.replace("{{PLACE}}",n+".").replace("{{NAME}}",i).replace("{{LANGUAGE}}",c).replace("{{SIZE}}",l).replace("{{LINK}}",s.share_link),o=jQuery(o),jQuery("#answers").append(o),e[c]=e[c]||{lang:c,user:i,size:l,link:s.share_link}});var s=[];for(var t in e)e.hasOwnProperty(t)&&s.push(e[t]);s.sort(function(e,a){return e.lang>a.lang?1:e.lang<a.lang?-1:0});for(var o=0;o<s.length;++o){var l=jQuery("#language-template").html(),t=s[o];l=l.replace("{{LANGUAGE}}",t.lang).replace("{{NAME}}",t.user).replace("{{SIZE}}",t.size).replace("{{LINK}}",t.link),l=jQuery(l),jQuery("#languages").append(l)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/,NUMBER_REG=/\d+/,LANGUAGE_REG=/^#*\s*([^,]+)/;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table></div> <tbody id="languages"> </tbody> </table></div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody></table>