Esperaba publicar algo más complejo como mi primer acertijo en PCG, pero una pregunta de tarea particular, eh ... sobre Stack Overflow me inspiró a publicar esto. Ellos quieren:
imprima el siguiente patrón para cualquier palabra que contenga un número impar de letras:
P M R A O R G O R R A P M
Observe que las letras se separan de un caballero en el patrón que necesita imprimir. Entonces, cada otra columna está vacía. - (Gracias xnor por señalar esto).
Reglas
- El uso de C ++ está prohibido. Como puedo vincular esta pregunta allí.
- Puede usar
stdout
, o cualquier medio de salida rápida de una cadena (por ejemplo,alert()
en JavaScript). - Como siempre, el código más corto gana.
Respuestas:
Pyth , 22
Prueba:
Explicación:
fuente
~
fuera bit a bit en Pyth. Entonces podríamos cambiart-lzd
a+lz~d
- todavía 5 caracteres.Vz
Es un buen truco: no sabía queU<string>
dabarange(len(<string>))
.APL (
37353427)Toma entrada del teclado, así:
fuente
Python 2 -
94 90 8988Entrada:
Salida:
fuente
i in[j,L+~j]
.L+~j
.+~
truco ...for i in R:print" ".join([s[j]," "][j!=i!=L+~j]for j in R)
para guardar un char? (No tengo acceso a Python 2 ahora para probar.)Python 3: 75 caracteres
Para la línea
i
, comenzamos con una lista de espacios y configuramos las entradasi
desde el frente y hacia atrás para que sean iguales a las letras de la cadena de entrada. Luego, imprimimos el resultado.Las cadenas de Python son inmutables, por lo que
a
debe ser una lista de caracteres. La listaa
debe inicializarse dentro del ciclo o las modificaciones se transferirán entre ciclos. Usamosprint(*a)
para imprimir cada carácter en la lista, separados por espacios, lo que requiere Python 3.Las líneas de salida son simétricas, por lo que podemos tener una
i
cuenta atrás en lugar de arriba usando un ciclo while.También funciona para un número par de letras.
fuente
VlzJ*]dlz=@JN@zN=@Jt_N@_zNjdJ
cuál es 29 bytes ... Creo que tendré que intentar algo más para vencer a APL. Además, +1 como prueba de que Python 3 puedelen("raw_input()") + len("print ") > len("input()") + len("print()")
.input()
también es válido en Python 2 (solo actúa de manera algo diferente), por lo que a menos que la entrada para el desafío sea bastante estricta, Python 2 generalmente ganará.print" ".join(a)
tu código es más corto (82) que el mío.CJam,
2725 bytesPruébalo en línea.
Ejecución de ejemplo
Como el ejemplo en la respuesta, cada línea tiene espacios en blanco al final.
Cómo funciona
fuente
Java - 168
Un bucle anidado simple, no hay nada realmente especial aquí.
Con saltos de línea:
fuente
Pure Bash, 94 bytes
fuente
t%l
cálculos. Guárdelo el primer uso en una variable y((x=t%l))
luego use la variable para reducirlo a 94 caracteres.x=t%l
yy=t/l
fue más largo ... no se me pasó por la cabeza solo usar xRubí, 64
Explicación
String
.n
en total):n
espacios.i
th yn-i
th (~i
, gracias xnor) con el carácteri
th yn-i
th de la entrada.fuente
-i-1
como el complemento de bits~i
.gets.size.times{|x|u=?\s*~/$/;u[x]=$_[x];u[~x]=$_[~x];puts u}
(se supone que la entrada no termina con una nueva línea, por ejemploecho -n CODE-GOLF
). Uno puede hacer uso adicional de.chars
para salvar a otro personaje:x=0;gets.chars{|r|u=?\s*~/$/;u[x]=r;u[~x]=$_[-x+=1];puts u}
JavaScript (E6) 101
95129136Editar espaciado de letras incorrecto. Fijo.
Edición más simple y más corta usando clásicos para bucles
Como una función, salida a través de una ventana emergente.
Versión anterior usando .map
Prueba en la consola FireFox / FireBug
Salida
fuente
Befunge-93,
6871Puedes probarlo aquí . Aparecerá un cuadro de diálogo de entrada en cada paso
~
; ingrese su palabra un carácter a la vez (después de todo, dice que la entrada es 'klunky'), terminando con un espacio.No se imprimirá en la consola; ¡Esto no sería Befunge sin un toque de auto-modificación, después de todo! En su lugar, modificará su propia cuadrícula para mostrar el mensaje. Una vez hecho esto, la cuadrícula se verá así:
(Tenga en cuenta el noble sacrificio de la celda en (0,0), después de que sepamos que el puntero ya no irá allí, con el fin de almacenar un dato).
También funciona con entradas de longitud uniforme. Tenga en cuenta que, dado que Befunge-93 está limitado a una cuadrícula de 80x25, el tamaño de entrada está limitado a 21 caracteres si lo ejecuta en un intérprete Befunge-93. Ejecutarlo como Befunge-98 debería eliminar este límite.
Editar : ahora funciona más en la línea de la salida prevista, a expensas de solo tres caracteres de longitud.
fuente
Javascript 102
84 85Editar: Tuve que arreglar el espacio. Ya no es tan pequeño.
fuente
function(s)
ya que no recurres?CJam,
3836353432 bytesPruébalo aquí. Esto lee la palabra de entrada de STDIN. También funciona para un número par de caracteres. Esto imprime una columna final de espacios, pero no veo nada en las reglas en contra de eso.
Explicación
El contenido de la pila se imprime automáticamente al final del programa.
fuente
l:I,,_f{f{_2$=@2$+I,(=|\I=S?S}N}
en una servilleta que↑{∊2↑¨⍵↑¨I}¨↓(+∨⌽)∘.=⍨⍳⍴I←⍞
... risitaC, 105
dos formas ligeramente diferentes de hacerlo.
Si desea agregar espacios adicionales, reemplace
putchar(
conprintf(" %c",
un extra de 5 caracteres.fuente
J -
3630 bytes:Editar: 6 caracteres más cortos, los créditos van a @algorithmshark .
p.ej:
Bonificación: también funciona con cadenas de longitud uniforme:
fuente
Prólogo - 240 bytes
Invocación:
Legible:
fuente
Lienzo , 5 bytes.
Pruébalo aquí!
Explicación:
fuente
R ,
99989389 bytesPruébalo en línea!
La línea 1 lee la cadena de entrada, la divide en caracteres, almacena su longitud y crea una matriz con la palabra en su diagonal principal: las letras de la palabra se superponen en una matriz de identidad (y se repiten de manera predeterminada para que coincida con su longitud) y solo las que coinciden Los 1 se retienen, otros se reemplazan por espacios.
La línea 2 imprime una matriz formada por elementos de la matriz diagonal o su versión espejada horizontalmente, la que sea mayor.
−2 + 1 = −1 byte gracias a JayCe
−4 bytes gracias a Giuseppe
fuente
pmax
e incorporando algunas asignaciones más.C # (
214212)(Ciertamente mal) Versión golfizada:
Versión sin golf:
Cualquier sugerencia, consejo, truco o comentario es muy bienvenido, ya que este es mi primer intento en CodeGolf. Solo quería probarlo, aunque sé que la longitud de mi byte C # ni siquiera se acercará al doble de las mejores soluciones;)
¿Y cómo cuentan ustedes sus bytes? Acabo de publicar lo anterior en una ventana de Quick Watch y lo hice
.Length
. Podría escribir un pequeño programa para contar bytes por mí, pero apuesto a que hay una manera más fácil que aún no conozco.fuente
for(;i < l;i++)
.JavaScript (ES6) -
185177175170 bytesPon esto en la consola de Firefox y ejecútalo como
f('PROGRAM')
:f("CODE-GOLF")
:fuente
Mathematica, 149 bytes
Entrada pasada como parámetro a la función; La función devuelve la cadena de salida. Hay una nueva línea al final de la salida.
Explicación: Creamos una matriz diagonal con la cadena, luego creamos una copia volteada verticalmente
Reverse@#
para invertir las filas. Luego tenemos una tercera matriz de las mismas dimensiones que contiene solo 32 (espacio ascii). UsamosMapThread
para tomar el elemento máximo sabio de estas 3 matrices. Finalmente,Riffle
espacios en cada fila,Append
una nueva línea al final yFlatten
el resultado.fuente
C , 119
Es posible que esto no se compile como C ++, por lo que espero no haber violado las reglas :)
fuente
i=0
yj=0
no es necesario, ya que las variables globales se inicializan a cero. 3. Puede usar enmain(l,v)char**v;
lugar demain(int l,char**v)
. 4. Si actualizai
comoi+=puts("")
, puede deshacerse de los corchetes del bucle externo.Perl - 90
Podría ser posible exprimir algunos caracteres más de esto:
89
+1
para-n
.Corre con:
Salida:
fuente
T-SQL: 180
Tomando la entrada de la variable @i
Esto introduce caracteres individuales en / decrementando desde el principio y termina en una cadena de espacios.
Resultado de la prueba
fuente
PowerShell
11810297Salidas:
fuente
Jalea , 11 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 81 bytes
EDITAR : -1 Gracias Joe King. No vi que el TIO proporciona una pasta directa preformateada para CG.
Pruébalo en línea!
fuente
-i-1
puede ser+~i
C # 208
fuente
t+=i==j?s[i]:i==n-j-1?s[n-i-1]:"";
.GolfScript 46 ( DEMO )
fuente
No importa cuánto tiempo, siempre debe haber una respuesta en ...
Java -
289234 bytesSin golf:
La producción, mal hecha, es:
Agregué elMaldición, realmente apesta.import java.util.Scanner
código interno porque nunca recuerdo si las importaciones cuentan para el conteo de bytes ...fuente
from math import floor as f
que es un poco engañosoSystem.out.print
llamadas en una, utilizando un par de operadores ternarios.System.out.print
llamada al final.C # (192/170)
O, como "Main () only":
fuente