Reto
Dada una cadena como entrada, baje el programa Fourier que genera esa cadena.
En Fourier no hay una manera fácil de generar una cadena: debe pasar por cada código de carácter y generarlo como un carácter.
Fourier
El lenguaje se basa en un acumulador, una variable global que se inicializa a 0 al inicio del programa. Esto es utilizado por casi todos los operadores en el idioma. Solo algunos no cambian el valor del acumulador.
Personaje fuera
a
Toma el valor del acumulador como el código ASCII y genera el carácter. No cambia el valor del acumulador.
Si el acumulador es mayor que 255, el programa devolverá un error. Del mismo modo, si el acumulador es menor que 0.
Número fuera
o
Emite el valor del acumulador. No cambia el valor del acumulador.
Incrementar
^
Aumentar el acumulador en uno.
Disminución
v
Disminuya el acumulador en uno.
Añadir
+x
Establece el acumulador en el valor del acumulador más el valor de x.
Sustraer
-x
Establece el acumulador en el valor del acumulador menos el valor de x.
Multiplicar
*x
Establece el acumulador en el valor del acumulador multiplicado por el valor de x.
Dividir
/x
Establece el acumulador en el valor del acumulador dividido por el valor de x. (Tenga en cuenta que esta es una división entera, por lo que 1/6
resulta en 0
)
Número
n
Establezca el acumulador en el entero n.
Nota
Aquí, x
y n
puede ser cualquier número entero desde 0
hasta 2^32-1
inclusivo.
Más información
Solo debe usar los operadores descritos anteriormente. Por lo tanto, su programa de Fourier generado no es válido si utiliza cualquiera de los siguientes (tenga en cuenta que los siguientes operadores están autorizados para la recompensa):
- Repetir bucles
- Si las declaraciones
- Variables
- Aleatorio
- Módulo
- Entrada del usuario
- Mayor / menor que los operadores
- Operadores de igualdad
- Pantalla clara
- Tiempo de retardo
- Funciones de fecha
Su programa puede ser un programa completo o una función, tomando entrada a través de STDIN, un archivo o argumentos de función. También puede recibir información directamente de Internet.
Tenga en cuenta que si hay un vv
código en su código, debe reemplazarlo por -2
. Lo mismo ocurre ^^
, reemplazándolo con +2
.
Ejemplos
Si la entrada es 7n
, entonces el programa esperado es:
55a110a
Pero puedes guardar un byte con
55a*2a
Otra forma es
7o110a
Usando número fuera.
Del mismo modo, si la entrada es Hello
, entonces el programa esperado es:
72a101a108a108a111a
Puede reducirlo en 3 bytes (porque la salida no cambia el acumulador):
72a101a108aa111a
Pero espera, podemos usar el operador de suma, ahorrando 2 bytes:
72a101a+7aa+3a
Formateo
Como usaré la tabla de clasificación de Stack Snippet de Martin Büttner, por favor, ¿podría formatear el título de esta manera?
# <Language name>, <length of total output> bytes
Luego, puede poner lo que desee debajo del título.
Victorioso
Debe publicar la longitud de los programas de Fourier (producidos por su código) para generar este archivo de texto y este archivo de texto . Su puntaje es la longitud combinada de ambos programas de Fourier en bytes (los caracteres no ASCII no se usan en Fourier, por lo que realmente no hace la diferencia).
La persona con los puntajes más bajos gana. Si hay un empate, gana el programa más corto en bytes.
Generosidad
Esta recompensa de 500 repeticiones es para una nueva respuesta que juega golf con cualquiera de las funciones de Fourier. Eso incluye variables, bucles y sentencias if, etc. Esta nueva respuesta no será aceptada.
Tabla de clasificación
Consulte la sección de formato anterior:
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>