Su tarea es invertir el orden en que algunos prints
se ejecutan.
Especificaciones:
su código tendrá este formato:
//some lines of code
/*code*/ print "Line1" /*code*/
/*code*/ print "Line2" /*code*/
/*code*/ print "Line3" /*code*/
/*code*/ print "Line4" /*code*/
//some lines of code
Tendrá que print
(o echo
, o write
, o equivalente) esas cadenas del cuarto al primero.
Usted decide qué líneas de su programa deben ser
print
las cadenas, pero deben ser adyacentes ;Cada línea puede contener solo uno
print
y no puede exceder los 60 bytes de longitud;Dado que este es un concurso de popularidad , sea creativo y evite escribir solo uno
goto
o un simplefor(i){if(i=4)print"Line1";if(i=3)...}
La respuesta más votada en 2 semanas gana esta.
Su salida DEBE ser
Line4 Line3 Line2 Line1
ORLine4Line3Line2Line1
ORLine4\nLine3\nLine2\nLine1
(donde\n
es una nueva línea), y debe generarse solo ejecutándolas alprints
revés.
¡Feliz codificación!
ACTUALIZACIÓN: ¡El concurso ha terminado! Gracias a todos :)
Respuestas:
Commodore 64 BÁSICO
fuente
PHP
Abusar de la precedencia ... :-)
fuente
print
puede usarse como una expresión, ya que puede estar en perl, cuyo valor de retorno es siempre1
.!1
devuelvebool(false)
, que cuando se escribe como una cadena devuelve la cadena vacía. Una restricción más adecuada para PHP podría ser requerir enecho
lugar deprint
; lo anterior realmente es solo una declaración.print ("Line 1". !print ("Line2". !print ("Line 3". !print "Line4")));
- todo lo que está a la derecha de una declaración impresa es parte de ella.print
se llama primero, no termina de evaluar lo que necesita imprimir hasta que los interiores (inferiores)print
ya se hayan llamado y evaluado por completo. Y los!
s son solo para ocultar los 1 que se imprimirían de otra manera. ¡Brillante, @bwoebi!C
¡El comportamiento indefinido es el tipo de comportamiento más emocionante!
La salida real puede variar según su compilador, vinculador, sistema operativo y procesador :)
fuente
Java
Usando la reflexión
Salida:
Una explicación de por qué esto funciona se puede encontrar aquí .
fuente
C (y una especie de Python)
Nueva versión, utilizando una macro para adaptarse perfectamente al formato de la pregunta. Siguiendo el comentario de Quincunx, agregué
return
para hacerlo más agradable.También funciona en Python, pero se imprime en el orden correcto.
Versión original: los dos son prácticamente iguales, después de la macro sustitución:
fuente
#define } 0))));
(no sé exactamente cómo funcionan las macros en C). De esa manera, podría tener las declaraciones de impresión en el método principal, nada más.}
, pero puedes definirreturn
, lo que ahora hice. Ahora es casi un políglota: laprint
sintaxis funciona en varios lenguajes de script, a#define
menudo es un comentario, peromain(){..}
no funciona en ningún idioma que pueda encontrar.print
que ser reemplazado por"\n",printf(
?ES6 (usando el modo hacia atrás;)
Wow, parece que los diseñadores de ECMAScript tuvieron una previsión increíble cuando hicieron del modo hacia atrás parte de la especificación:
Salida (evaluación, realmente):
Tenga en cuenta que se trata exactamente de la forma solicitada, con solo un ligero retroceso para ajustarse a la sintaxis del modo . Tenga en cuenta también que este modo solo es compatible con versiones recientes de Firefox en este momento .
Nota final: en realidad, no hay modo hacia atrás. Pero este sigue siendo un script válido que se ejecuta en Firefox (copie todo). :RE
ES6 "modo laxo"
BONIFICACIÓN : Aquí hay una versión actualizada que no usa el modo hacia atrás, pero usa el "modo laxo" recién especificado donde el motor JS solo intentará adivinar qué se supone que debe hacer el código, independientemente de la adherencia a cualquier sintaxis JS especificada ( básicamente la antítesis del modo estricto):
Tenga en cuenta que el " modo laxo " actualmente solo está disponible en Firefox> = 34.; P
fuente
C
fuente
Rubí
Editar: Alternativamente,
fuente
ruby
-ish con bloques de código? pastebin.com/LDWpxKx8method_missing
embargo, creo que es bastante Ruby-ish.PHP
Lo sé, esto es una locura ...
fuente
goto
" ;-)Haskell
Esto es casi idiomático Haskell, ya que el programa ahora parece una composición de función de derecha a izquierda. Si la función no se imprimiera, pero algo que devolvería un valor (útil), la declaración del operador sería innecesaria y el código sería algo que vería en las bibliotecas.
fuente
(<<) = flip (>>)
<*
y*>
.<*
operador aplicativo es diferente a esto<<
:a <* b
es equivalente ado x<-a;b;return x
, es decir, ejecutaa
el efecto primeroPerl
fuente
HTML + CSS
CSS:
Ver jsFiddle .
Editar:
para ajustarse mejor a las reglas, aquí hay una variante en XML que realmente utiliza
print
.donde style.css debería estar
HTML sin CSS
Y para el gusto, aquí hay uno sin CSS.
Violín .
fuente
p {float:right;}
div {float:left}
.C ++
(Las variables locales se destruyen en orden inverso a la declaración).
C ++ 11
(Casi lo mismo, pero usando lambdas y un miembro de datos de matriz en su lugar).
fuente
std::function
, y estaba tratando de deshacerme de ella. ¡Ahora no necesito porque lo tienes!Haskell
fuente
Javascript
fuente
1,2,3,4
como tiempos de espera también funciona para mí. (Sin embargo, no sé si este comportamiento está estandarizado en ECMAScript.)setTimeout
está estandarizado en HTML5 / temporizadores, no en ES. Además, especifica un tiempo de espera mínimo de 4 ms :-)C
Tratando de hacer que los consejos de la pregunta sean lo más creativos posible:
fuente
BF
Asume envoltura celular.
Por que funciona
La primera y la última línea se componen de un bucle que se repite cuatro veces (contador =
cell0
).Dentro del bucle, hay una variable de contador (
cell1
) que se incrementa en cada ejecución.Cada línea verifica si disminuir en cuatro, tres, dos o uno es igual a cero. Por lo tanto, en la primera ejecución, el contador es uno y se ejecuta la última línea, en la segunda ejecución, se ejecuta la tercera línea, etc.
La
(line 1)
muestra dónde debe hacer el texto que se imprime. Las flechas en los bucles se asignancell2
para este propósito. Se[-]
limpiacell2
después de usarlo.fuente
Golpetazo
En memoria del venerado SleepSort y SleepAdd , te presento ... SleepReverse :
fuente
$1
y$2
:function print(){(sleep $((4-$2));echo "$1 $2";)&}; print Line 1
Java
Todo está en el momento adecuado ... ;-)
fuente
Python 3
fuente
Golpetazo
Aquí viene el guión de doble cara:
fuente
tac
existía! Jaja gracias.Lisp común № 1
Es fácil escribir una
ngorp
macro que ejecute sus formularios en orden inverso:Lisp común № 2
Aquí hay uno que toma el problema muy literalmente; El código de la pregunta aparece en el programa sin modificación:
fuente
PHP
Otra
eval
variante:fuente
F#
Acabo de crear un operador personalizado que ejecuta funciones en orden inverso.
fuente
(?) f g x
lee más o menos como(?)(f, g, x)
, nof(g(x))
Go (Golang)
Pruébelo: http://play.golang.org/p/fjsJLwOFn2
fuente
Python3
Puede ser 6 bytes más corto al eliminar todos los espacios en la última línea.
fuente
Javascript
C ++ 11
fuente
std::reverse
ystd::for_each
, simplemente usewhile (! functors.empty()) { functors.back()(); functors.pop_back(); }
Lote
fuente
C#
En lugar de llamar directamente al método Run, estoy creando un método dinámico que contiene una copia del código de bytes IL de Run, excepto que los operandos de código de operación de cadena de carga se intercambian. Lo que hace que el nuevo método muestre las cadenas en orden inverso.
fuente
Pitón
otra solución más usando
eval()
No es muy complejo, pero fácil de entender.
fuente