Una buena resolución para 2015 es vivir de manera más sostenible. Comenzaremos reciclando. Código de reciclaje, eso es!
Su tarea es imprimir el número 2015
en STDOUT, con o sin línea nueva (y solo eso). Sin embargo, debe hacerlo reciclando algún código antiguo de PPCG. Así es como funciona eso:
- Elija cualquier respuesta publicada en CodeGolf.SE antes del 2014-12-16 00: 00: 00Z (el día que publiqué esto en el sandbox). Excepción: no puede utilizar ninguna respuesta del desafío de Año Nuevo del año pasado .
- Elija un bloque de código de esa respuesta (no un fragmento de código en línea, tiene que ser un en su propio párrafo). Este bloque debe anunciarse como código real, por ejemplo, no puede usar casos de prueba o resultados de ejemplo que usen el formato monoespacio.
- Reorganice los caracteres en ese bloque de código para formar su presentación para este desafío. Solo puede cambiar el orden, no agregar ni eliminar ningún carácter. Esto incluye nuevas líneas.
- Debe poder mostrar que el bloque fuente original es sintácticamente válido en su idioma. En el mejor de los casos, puede hacerlo mostrando que se ejecuta sin errores de tiempo de compilación o tiempo de ejecución. Entonces, aunque el código original puede haber sido Java, podría usarlo para una respuesta de espacio en blanco (ya que cada archivo es válido en espacio en blanco), pero probablemente no pueda usarlo para una respuesta de Python (ya que el original no será una sintaxis de Python válida) )
Tenga en cuenta que su respuesta debe ignorar todas las entradas y el estado externo (incluida la fecha actual real). Se puede leer de STDIN, por ejemplo, con tal de que no se bloquea si está vacío, y produce la misma salida para todos los posibles contenidos de la corriente.
El código resultante debe ser un programa completo (no una función ni un fragmento que suponga un entorno REPL).
Este es el código de golf, por lo que gana la respuesta más corta (en bytes ).
Tablas de clasificación
Estoy seguro de que esto se desarrollará de manera muy diferente en diferentes idiomas. Por lo tanto, el siguiente fragmento de pila genera una tabla de clasificación regular y una descripción general de los ganadores por idioma.
Para asegurarse de que su respuesta se muestre, comience con un título, usando la siguiente plantilla de Markdown:
# Language Name, N bytes
¿Dónde N
está el tamaño de su envío? Si mejora su puntaje, puede mantener los puntajes antiguos en el título, tachándolos. Por ejemplo:
# Ruby, <s>104</s> <s>101</s> 96 bytes
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(){$.ajax({url:answersUrl(page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(e){answers.push.apply(answers,e.items);if(e.has_more)getAnswers();else process()}})}function shouldHaveHeading(e){var t=false;var n=e.body_markdown.split("\n");try{t|=/^#/.test(e.body_markdown);t|=["-","="].indexOf(n[1][0])>-1;t&=LANGUAGE_REG.test(e.body_markdown)}catch(r){}return t}function shouldHaveScore(e){var t=false;try{t|=SIZE_REG.test(e.body_markdown.split("\n")[0])}catch(n){}return t}function getAuthorName(e){return e.owner.display_name}function process(){answers=answers.filter(shouldHaveScore).filter(shouldHaveHeading);answers.sort(function(e,t){var n=+(e.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0],r=+(t.body_markdown.split("\n")[0].match(SIZE_REG)||[Infinity])[0];return n-r});var e={};var t=1;answers.forEach(function(n){var r=n.body_markdown.split("\n")[0];var i=$("#answer-template").html();var s=r.match(NUMBER_REG)[0];var o=(r.match(SIZE_REG)||[0])[0];var u=r.match(LANGUAGE_REG)[1];var a=getAuthorName(n);i=i.replace("{{PLACE}}",t++ +".").replace("{{NAME}}",a).replace("{{LANGUAGE}}",u).replace("{{SIZE}}",o).replace("{{LINK}}",n.share_link);i=$(i);$("#answers").append(i);e[u]=e[u]||{lang:u,user:a,size:o,link:n.share_link}});var n=[];for(var r in e)if(e.hasOwnProperty(r))n.push(e[r]);n.sort(function(e,t){if(e.lang>t.lang)return 1;if(e.lang<t.lang)return-1;return 0});for(var i=0;i<n.length;++i){var s=$("#language-template").html();var r=n[i];s=s.replace("{{LANGUAGE}}",r.lang).replace("{{NAME}}",r.user).replace("{{SIZE}}",r.size).replace("{{LINK}}",r.link);s=$(s);$("#languages").append(s)}}var QUESTION_ID=43048;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var answers=[],page=1;getAnswers();var SIZE_REG=/\d+(?=[^\d&]*(?:<(?:s>[^&]*<\/s>|[^&]+>)[^\d&]*)*$)/;var NUMBER_REG=/\d+/;var 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>Language<td>Size<tbody id=answers></table></div><div id=language-list><h2>Winners by Language</h2><table class=language-list><thead><tr><td>Language<td>User<td>Score<tbody id=languages></table></div><table style=display:none><tbody id=answer-template><tr><td>{{PLACE}}</td><td>{{NAME}}<td>{{LANGUAGE}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table><table style=display:none><tbody id=language-template><tr><td>{{LANGUAGE}}<td>{{NAME}}<td>{{SIZE}}<td><a href={{LINK}}>Link</a></table>
Respuestas:
GolfScript, 9 bytes
La respuesta original (¡dibs!) También está en GolfScript, que es como sé que es sintácticamente válida. Probé en http://golfscript.apphb.com/ .
Desprecio el uso de idiomas diseñados para jugar al golf, pero tuve que ganar este desafío, así que traicioné mis valores publicando esta respuesta. No sé qué hacen la mayoría de los personajes en este lenguaje, pero una vez aprendí inadvertidamente, mientras pasaba por alto una respuesta de GolfScript, que un
}
comentario inigualable del resto del programa. Esto me permitió ignorar al resto de los personajes.fuente
Befunge-93, 2085 bytes
Pensé que me divertiría y me volvería meta reciclando lo mejor de lo reciclado . No voy por ningún premio por brevedad aquí.
En realidad, también es un políglota para 5 idiomas: Befunge-93 , oOo Code , Pyth , Python 3 y Ruby. Sin embargo, dado que el código original solo es sintácticamente válido para Befunge-93, solo cuento eso.
Desafortunadamente, el código original tenía solo un par
[]
y demasiados.
s, por lo que no pude adaptar Brainfuck (de ahí el código oOo).Notas
Esto resultó ser sorprendentemente restrictivo, porque:
001111111222
requiere el uso deord
Ruby y Python. En particular no hay5
, lo que resultó ser un dolor para Pyth.@
significado significaba quep
debía usarse para colocar un@
Befunge.*
significaba que teníamos que multiplicar dividiendo por el inverso de un número. Divertido.Befunge-93
El programa Befunge es
donde nos hemos saltado las instrucciones inútiles. Codificamos cada dígito como la diferencia en los valores ASCII entre caracteres, específicamente
cabf
frentea
.oOo Code
El BF correspondiente es
, de los cuales la única parte relevante es
Pyth
Pyth solo ejecuta la primera línea, entonces
Tenga en cuenta que Pyth usa una notación de prefijo, por lo que la primera parte de la línea es en realidad
( Nota:
e
significa%10
)Debido a la naturaleza de Pyth, esto se imprime automáticamente. El resto de la línea es Pyth válida, pero el espacio anterior al anterior
o
suprime la impresión automática.Python 3
La mayoría del código de Python se comenta usando cadenas, especialmente una cadena grande con comillas triples en el medio. Ignorando algunas cadenas perdidas, tenemos:
La primera y la última línea son sintácticamente válidas, pero no hacen nada. Las dos líneas del medio imprimen lo que necesitamos.
Rubí
El código Ruby es similar, pero estamos usando un heredoc en lugar de una cadena de tres comillas para comentar la mayor parte del programa. Ignorando algunas cadenas perdidas, tenemos:
Una vez más, la primera línea es sintácticamente válida, pero no hace nada. La segunda línea imprime lo que necesitamos.
fuente
CJam, 12 bytes
El tema Descifrar el código es una muy buena fuente para la impresión de números aleatorios. Este fue bastante divertido de armar :)
Bonus respuestas
14 bytes:
19 bytes:
fuente
Avestruz, 198
Estoy emocionado de obtener una respuesta de avestruz; No me importa cuánto tiempo sea. : P (esta es la versión 0.5.0 , por cierto)
Original :
Todo lo que cambié fue lo siguiente:
Envuelve todo lo que no sea
2 n15
en un bloque ({}
) que aparece inmediatamente (;
).Atrapado
2 n15
al final.2
empuja una2
,n
empuja una0
y15
empujones15
, que en última instancia se convierte2015
cuando la salida.En realidad, esto me ayudó a encontrar un error:
2n15
Por qué no funciona por alguna razón (imprime215
), pero ambos2 n15
y2n 15
trabajo. Tendré que descubrir por qué es eso ...Aquí está la consulta de búsqueda que utilicé para encontrar este ejemplo de código perfecto:
Esta respuesta funcionaría para 140, pero voy a ver si puedo ir más pequeño ...
fuente
JavaScript, 26 bytes
Original :
Reciclado:
Simplemente desplaza 4030 un poco a la derecha.
fuente
CJam, 14 bytes
Este es un poco complicado, así que tuve que publicarlo a pesar de que es un poco largo. La respuesta original también está en CJam, por lo que es válida.
Respuesta original:
Reciclado 2015:
Cómo funciona
Entonces la pila contiene
20
y15
que se imprimen uno tras otro, imprimiendo 2015Pruébalo en línea aquí
fuente
Maravilloso, 54 bytes
Respuesta aburrida (54 bytes)
(seguido de una tonelada de nuevas líneas finales para igualar 54 bytes)
Respuesta original
El tablero principal simplemente suelta canicas que representan cada uno de los caracteres de
2015
.R
y losQ
tableros están definidos, pero nunca se usan.Respuesta alternativa (92 bytes)
Respuesta original
Se deben verificar los espacios como celdas en blanco. Primero imprime
2
(0x32), luego imprime0x03+0x02+0x0A=0x0F=15
como un decimal de tres dígitos (015
). Las primeras tres líneas no hacen nada.Prueba las respuestas aquí.
fuente
Pyth, 25
https://github.com/isaacg1/pyth
Aquí está la respuesta original (también escrita en pyth). Sé que esta no es una respuesta muy competitiva (hay una respuesta de pitón de longitud 26), pero realmente disfruté planteándola, y creo que resulta una respuesta bastante chistosa.
Explicación:
Básicamente, esto es filtrar una lista de los primeros dos millones de números por ser igual a 2015. Luego, trata esta lista de números como los dígitos de un número base de 10 MIL MILLONES. Afortunadamente, solo hay un número igual a 2015 en el rango, por lo que obtienes 2015 * 10000000000 ^ 0, que es solo 2015. Esto toma un par de segundos para ejecutarse.
fuente
Perl, 48 bytes
Respuesta original
fuente
Python 2, 26 bytes
Tomado del script Python más pequeño para imprimir números pares de 0 a 100 hilos. Esta es probablemente la solución a la que @FryAmTheEggman aludía.
fuente
Mathematica, 60 bytes
Fuente
La parte entre
Floor
paréntesis es solo una serie de aplicaciones de funciones de funciones no existentes (con las que Mathematica no tiene problemas, debido a su modelo de cálculo simbólico). Del mismo modo, solo escribir el piso yPrint@2015
es multiplicación, de lo que Mathematica tampoco se queja. Sin el azúcar sintáctico, seríaDado que no estamos asumiendo un entorno REPL, el resultado evaluado de esto nunca se imprime (lo que sería
Null Floor[ggggiiimmnnoorrrstt[ee[RS[DF[IM], ad], ee], 0.22346]]
), sino que solo el efecto secundario de laPrint
realidad pasa a STDOUT.Gracias a Sp3000 por subir la fuente a esto.
fuente
> <>, 57 bytes
Código original de C ++, del desafío RadioASCII :
Reciclado > <> (Pescado) código:
Al igual que Befunge,> <> es un lenguaje 2D basado en pila. La ejecución comienza desde la parte superior izquierda e inicialmente es hacia la derecha. Solo se ejecuta la primera línea del programa, de la siguiente manera:
Ahora la gran pregunta es: ¿por qué el código C ++ es válido> <>? En> <> hay formas de cambiar la dirección del flujo del programa (después de todo, es un lenguaje 2D):
Cuando se ejecuta el código C ++, la inicial
#
refleja el flujo del programa hacia la izquierda. Pero> <> es toroidal, por lo que el puntero de instrucción se envuelve, aparece desde el final de la línea y se encuentra con el>
que dirige el flujo del programa hacia la derecha nuevamente. Luego, el puntero vuelve al#
, rebota al>
... y, por lo tanto, se produce un bucle infinito y nunca se produce un error.fuente
Python 3, 1878 bytes
Muy largo, pero quería compartir de todos modos:
Tomado de la respuesta de KennyTM .
Vi que 2, 0, 1 y 5 y # se podían encontrar en el código, así que moví algunos caracteres para hacer
print(2015)
y podría comentar el resto. También puse la importación PIL en el comentario para que no requiera esa biblioteca.fuente
PHP, 21 bytes
Intentemos esto de nuevo. Tomado de otra respuesta PHP de Descifrar el código fuente. Es bastante básico, pero hasta ahora es el programa más corto en un idioma que no es de golf. Puede verificarlo en http://codepad.org/15EjIYAU . El código original es el siguiente:
fuente
4*2/8
;)