Introducción
Malas noticias, muchachos, tienes detención. Tu profesor de inglés no entiende este sitio y quiere que "dejes de hacer matemáticas en tus dohickeys digitales, ¡esta es una clase de inglés!"
Ella lo sentenció a escribir su dicho favorito en la pizarra 25 veces, lo que le dará un total de 100 líneas en la pizarra.
The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
¡Por suerte para ti, eres un ávido lector (sin mencionar un experto en códigos)! Tienes una lectura sobre un truco que posiblemente te haga fácil.
(Foxtrot por Bill Enmienda)
Desafortunadamente para Jason, no funcionó. ¡Pero tienes una idea mejor! Como su profesor de inglés cree que está haciendo matemáticas, si deja todos los números fuera de su programa, ¡podría funcionar! También desea mantener su programa lo más corto posible porque es un estudiante perezoso y no quiere escribir mucho en la pizarra.
Escriba un programa que cumpla con las siguientes reglas:
- Su programa debe imprimir las 4 líneas anteriores 25 veces. Las líneas deben salir en ese orden, repitiéndose. Totalice exactamente 100 líneas de salida (una nueva línea final al final o una nueva línea inicial al principio está bien).
- No puedes usar los personajes
0123456789
. ¡Tu profesor se confunde con las matemáticas y te llamará! - Puede usar cualquier importación y bibliotecas externas sin contar las importaciones. Tu profesor de inglés no sabe de programación. ¡Jason podría haber ahorrado mucho trabajo al no escribir
#include <stdio.h>
y no querrás cometer sus mismos errores! - Califica tu programa por
byte
conteo. ¡La puntuación más baja gana!
Respuestas:
CJAM,
109107106104103 bytesLo anterior es un volcado xxd reversible.
Pruebas
Puede generar y ejecutar el código anterior ejecutando esto en el intérprete en línea :
Para ver el código generado (sin ejecutarlo), elimine el final
~
.Para contar el número de bytes (un carácter es un byte en ISO-8859-1), reemplace el final
~
con a,
.Versión imprimible (122 bytes)
Después de presionar la cadena (S), se ejecuta lo siguiente:
Moar golf
Después de presionar la cadena no imprimible (U), se ejecuta lo siguiente:
Esto empuja la cadena de la versión imprimible. El resto del código funciona como antes.
fuente
~
con,
para verificar.]:+~
hizo funcionar. ¿Por qué no agregas eso a tu código?JavaScript (ES6) 164
Prueba en la consola FireFox / FireBug.
fuente
Python:
188 173 160153No hago mucho pitón, pero esto me parece bastante corto.
Editar: Así que me equivoqué, ¡no fue corto en absoluto! Gracias por la ayuda en los comentarios: D
fuente
\
en el\n
resultado del escape ...b
alprint
:%
tiene mayor precedencia que*
.CJam,
151 140 135 132 130128 bytes (Tweetable)Pruébalo aquí
Puedo acortar esto a 110 bytes convirtiéndolo en unicode, pero como eso no está superando a la otra solución unicode, prefiero no decirlo :)
fuente
:D
haciendo ese emoticón allí? ¿Estás enviando mensajes de texto a tus amigos durante la detención? ¡Ve a la oficina del director!T
alias para.\nThe
, a continuación, quitar la línea extra que esto produce desde el inicio de la cadena de salida (mi CJAM-fu no es lo suficientemente bueno para averiguar si puede hacerlo fácilmente)PHP, 0 bytes
Para ejecutar este código, debe importar una biblioteca llamada
data://text/plain,<?php...classroom.\n";
con esto:Y debes haber
allow_url_include
habilitado en tuphp.ini
.No más números o extensiones, gracias a Dennis.
fuente
require_once "data://text/plain,The eighteen-hundreds...";
, que no requiere sh , no usa números y sigue siendo 0 bytes.Rubí,
185180176 bytesEDITAR: interpolación de cadenas, gracias @britishtea
Es mi primer golf, y no soy muy Rubista (pero ciertamente amo a Ruby). De todos modos, esto es todo (acortado, sugerencia de Doorknob).
fuente
s.split.size.next
ahorra 5 caracteres (no necesita especificar el espacio para dividir).(s.split.size+1).times
sería 1 byte más corto?Java
249231230222Mi primera respuesta! ¿Por qué no comenzar usando el idioma que conozco tan bien?
Sin golf
fuente
public
para tu clase y acortarloargs
a un solo personaje. También podría hacerlo ena++<':'
lugar de incrementarlo por separado. Dado que el OP no cuenta las importaciones, puede ahorrar un poco másimport static java.lang.System.*;
, luego no necesita escribirSystem.
más tarde (donde cuenta). Al hacerlo, lo reduje a alrededor de 230. Es posible que desee echar un vistazo a la página de consejos de Java si aún no lo ha hecho.C 171
Al principio, probé la versión simplista (189 bytes), que era mejor que la otra solución C ...
que luego optimicé un poco ...
fuente
char *
.a
presumiblemente porque su valor predeterminado esint
, que puede aceptar unchar
valor. No me gusta ab
menos que lo llame unchar[]
pensamiento. VX, ¿qué compilador estás usando?b
esint
demasiado pero contiene el puntero a la cadena literal. Está completamente bien en GCC (tengo en mi máquina 4.8.2).for(a='a';++a<'z';)
JavaScript, ES6,
174 172154 bytesUsando el
replace
truco de @ edc65 . ¡Gracias!Funciona solo en la última versión de Firefox (34 y superior) debido al uso de cadenas de plantillas.
fuente
BrainFuck ( 1.597 caracteres )
Esto todavía se puede jugar más, si alguien está interesado.
Puede probar esto y confirmar que proporciona el resultado correcto mientras cumple con todas las reglas.
fuente
Perl - 145
¡Estoy feliz de ver tantas respuestas! Aquí hay una solución Perl.
fuente
Como ella odia tanto las matemáticas, ¿por qué no Mathematica (177)
fuente
Javascript ES6,
198193 bytesTu profesor no quiere ningún número, pero como son profesores de inglés, no tienen idea de lo que
Math.floor(Math.exp(Math.PI)+Math.E)
significa.Más legible:
Debe ejecutarse en la última versión de Firefox
fuente
with(Math)alert("long string here".repeat(exp(PI)+E|[]))
(q='aaaaa'.length)*q
"\x18".charCodeAt()
:! (¡codifique la flecha hacia arriba y ahorrará una tonelada!)Javascript -
178 bytes176 bytesMi primer golf, pensé en intentarlo con operadores un poco retorcidos, no resultó tan bien como esperaba, pero ¡bueno!
Como ya estoy detenido, y obviamente tengo problemas para comportarme ... Javascript - 71 Bytes
Este probablemente me meterá en problemas más profundos, pero, si ya me detuve y estoy planeando engañarme, aparentemente no tengo buen juicio sobre cómo debería comportarme en clase. Tal vez si puedo detener a uno de mis maestros, puedo detener a todos los demás golfistas.
¡Rápido! Usuarios de Chrome / IE 11 / Firebug, abra sus consolas AHORA MISMO y pruébelo.
(Por favor no me lastimes demasiado, pensé que era divertido)
fuente
C # -
229216 Bytesusing
FTW gratis !Alternativa, recuento del mismo byte (
using
aunque más abuso)fuente
a
':'-'!'
== 25), que es más corto quea.Length
, y permitirá que se incluya como usted sugiere. (Alternativamente, haga lo que parecen otras respuestas, y simplemente entre!
y:
, curioso, cómo todos elegimos los mismos caracteres)Befunge-93,
268260256 (tamaño de cuadrícula: 72x6 = 432)Esta es mi primera vez jugando al golf, así que pensé en probar un idioma que no se había hecho para este problema, ya que de lo contrario no agregaría nada. Dado que es compatible con Befunge-93 (cabe dentro de una cuadrícula de 80x25 y usa solo instrucciones de Befunge-93), también debería funcionar en Befunge-98. Por si acaso, también evité que el puntero pasara sobre cualquier carácter que no sea de instrucción que no sea espacio. No podía recordar si la especificación realmente definía esos caracteres como no-ops, y no tendré demonios nasales en MI código.
Realmente no se puede eliminar el código de Befunge. Lo clave a tener en cuenta aquí es que Befunge empuja los caracteres a la pila como sus valores ASCII, lo que hace que sea relativamente simple referirse a los números sin referirse literalmente a ellos. El
"K"
de arriba a la izquierda es 75, refiriéndose al número de repeticiones multiplicado por el número de "las" cláusulas por repetición; Utilizo el módulo y alguna otra astucia en (copias de) este número para determinar qué camino tomar a través de la impresión en cada vuelta.::-
es un buen modismo para cero, útil para cadenas de terminación cero; Lo uso dos veces aquí.En ocasiones, el puntero debe pasar por un lugar donde estoy definiendo una cadena, de ahí las elecciones específicas de caracteres utilizados para obtener ciertos números en algunos puntos.
Lo bueno de muchos intérpretes de Befunge es que puedes ver el puntero moverse alrededor de la cuadrícula, así como ver qué valores hay en la pila. De esa manera, puede avanzar y ver cómo funciona el programa usted mismo, ¡más o menos! Recomiendo usar http://befungius.aurlien.net/ si no tiene su propio intérprete Befunge preferido.
Esto probablemente se puede reducir un poco (o mucho) más. Por favor dame tu opinión! Si necesito dar una mejor explicación, alguien me avisa; Soy nuevo en esto.
Editar : eliminó algunos bytes al deshacerse de la redirección innecesaria a la última fila cuando el programa termina (simplemente colocando el lugar
@
donde^
solía estar).Otra edición : eliminó algunos bytes más en varios lugares, principalmente con trucos. (También se agregó el tamaño de la cuadrícula, como parece ser la tendencia con las respuestas de Befunge).
fuente
re a time
algún lugar?#
en un extremo de una línea para saltar el personaje en el otro extremo (en CCBI , por ejemplo,#
simplemente omite el espacio infinito entre él y el personaje en el otro extremo), lo que rompe este programa. No me he molestado en volver y arreglar este envío con esto en mente.1
dígitos allí, que no están permitidosPyth 135
136 140Tenga en cuenta el espacio final.
Utiliza casi el mismo truco que @Geobits y sus amigos comentaristas en la respuesta de Python para construir la cadena. Ahora también usa parte de esta respuesta .
Esto usa la variable incorporada
G
, que contieneabcdefghijklmnopqrstuvwxyz
y obtiene una menos que su longitud para producir las 25 salidas.fuente
Rubí -
152141http://repl.it/2Om/6
fuente
String#*
para repetir las líneas 25 veces en lugar deInteger#times
.puts"hi"
es legal).Python, 165 bytes
Funcionó muy bien que la longitud de h es 25, eso no fue intencional. =)
fuente
Python 2 - 143
Una respuesta tonta:
Tenga en cuenta que la cuenta completa es 162. Dejé fuera todo
from this import i
.Utiliza reemplazos similares a mi estrategia de Pyth, pero no pude resistir publicar esto después de descubrir la diversión de importar de esto :)
fuente
from this import i
! ¿Cómo supiste sobre eso?import this
. Entonces pensé: "¿Qué más podría haber en elthis
módulo?" Entonces llamédir(this)
. He aquí que, junto con un diccionario, una cadena confusa y una"!"
variable, había una constante numérica ... igual a 25.PHP (
175157156 bytes; 152 con unix EOF):No es la solución más desarrollada, pero seguramente hace el trabajo y es más pequeña que algunos intentos.
Aquí está el código:
Versión antigua:
Esto funciona porque php cambia los caracteres, y simplemente verificamos si no es así
z
y nos detenemos.(Una curiosidad es que cuando php alcanza
z
, luego va aaa
).fuente
Python 2 - 155
Nota: dado que los caracteres de control no se muestran en SE, lo he reemplazado por
\x19
.Versión base 64:
fuente
from string import *
o como se llame en Python[]
corchetes en la primera línea, lo que implícitamente crea una tupla y luego la descomprime.ord('d')//len('aaaa') to before the string so you don't have to bracket it.
LiveScript - 181
Importaciones requeridas:
Si desea ejecutarlo en Node.js, instale
LiveScript
( nolivescript
) yprelude-ls
paquetes desde npm, reemplacealert
conconsole.log
y ejecutelsc prog.ls
, dondeprog.ls
contiene el programa.fuente
0123456789
"T-SQL: 206
Utiliza una unión cruzada en cinco filas para generar 25 filas seleccionando la frase. Los saltos de línea son importantes para la salida.
fuente
Bash, 151 bytes
Más o menos un puerto directo de tu propia respuesta
fuente
C, 196 caracteres
Esta no es una tarea fácil para el buen C. El factorizar el patrón "El% steen-cientos ..." me ahorra dos caracteres completos .
Espacio en blanco para mayor claridad, incluye sin contar.
fuente
Rubí, 145
Explicación
String#upto
para imprimir las líneas 25 veces. El rango"K".."c"
es de 25 caracteres.fuente
#{a="The "}
en realidad te está costando más personajes!#{a}
tiene la misma longitud queThe
Raqueta 173
Sin golf:
fuente
C,
215203199 bytesSin golf
Usé bit shift para iterar sin ningún número.
a<<='\xC'+'\xD'
establece a en 0b1 [25 ceros]a>>=!!a
se desplaza un bit hacia la derecha cada vez que iteramos el bucleEditar:
a
es igual a argc, por lo que su valor ya es 1 cuando el programa se ejecuta sin argumentos. Se cambióa>>='\xB'-'\xA'
aa>>=!!'\xA'
4 bytes más corto. Además, el texto se mostró solo 24 veces. Arreglado. Se eliminaron los corchetes adicionales en elwhile
.Edición 2: cambiado
!!'\xA'
a!!a
. Parece funcionar y ahorra 4 bytesfuente
puts
para guardar más bytes.Rant, 191 bytes
No es la solución más corta, pero sigue siendo genial. Escribí una subrutina para escribir las primeras tres líneas, y la diseñé para que llamarla con un argumento vacío devolviera una cadena de 25 caracteres. Luego paso su longitud al repetidor.
Sin golf:
Pruébalo en línea
fuente