El desafío es simple:
generar una palabra
Especificaciones:
- La palabra debe ser pronunciable.
- Esto se define como "alternar entre una consonante y una vocal".
- Una consonante es una de las siguientes letras:
bcdfghjklmnpqrstvwxz
- Una vocal es una de las siguientes letras:
aeiouy
- Word debe ser generado aleatoriamente.
- Las palabras deben poder contener todas las consonantes y vocales. (No se puede usar solo
bcdf
para consonantes yaei
vocales). - La palabra debe contener 10 letras.
- El código más corto (en el recuento de caracteres) gana.
code-golf
random
natural-language
generation
Pomo de la puerta
fuente
fuente
echo buxitiwymu
técnicamente se ajusta a la especificación. Te aseguro que generé la palabra al azar: Py
como una vocal, dónde puedes usarq
yx
, y cuándo puedes usar combinaciones de dos letras comong
oea
Respuestas:
GolfScript, 32 caracteres
Ejecútalo en línea .
fuente
Ruby: 56 caracteres
Salidas de ejemplo:
fuente
'aeiouy'.chars
Sería un char más corto.TypeError: can't convert Enumerator into Array
Python, 81
Buena suerte al pronunciarlos.
fuente
:P
python grc.py | say
en mi máquina. Gracias por la ideaCOBOL, 255
Así que estoy aprendiendo COBOL en este momento. Usé esta pregunta como algo de práctica. Intenté jugar al golf.
Es 255 sin el espacio en blanco inicial y 286 bytes con.
Por lo que vale, esto se ejecuta en Microfocus COBOL para VS2012, y no tengo idea de si se ejecutará en otro lugar.
fuente
APL (34)
fuente
JavaScript, 74
No genera todas las combinaciones, pero creo que aparecen todas las consonantes y vocales.
JavaScript, 79
Más versión "al azar".
fuente
^0
de?Math.random
da un flotador, necesitamos un número entero.^0
trunca el número^
operador en JavaScript antes y he oído hablar de usarlo para truncar un flotante. ¡Gracias!^
Ruby:
7066 caracteresEjecución de muestra:
fuente
10.times
por un char menos.*10
->*4
, omitir*3
,rand 60
->rand 20
y has guardado 3 caracteres.R: 105 caracteres
fuente
J (51)
fuente
Procesamiento,
100999387Tras una inspección más cercana de la pregunta, veo que no requiere ningún resultado. He ajustado esto en consecuencia.
fuente
Objetivo-C, 129
Con la ayuda de Daniero
(Me encanta usar el tiende al operador (->)
fuente
Java, también conocido como el lenguaje más detallado jamás creado, 176 con la ayuda de Doorknob, Daniero y Peter Taylor (¡gracias chicos!)
Sin golf:
}
fuente
String a[]
aString[]a
(-1 caracteres), cambiow W = new w();
aw W=new w();
(-2 caracteres)f
y úselo en sui%2
lugar. Además, elfor
bucle se puede acortar, y puede colocar ambas cadenas dentro del operador condicional (también, no es necesario utilizar parens aquí) y usarcharAt
el exterior. Aquí está todo, 195 CHARS, 38import java.util.*;class w{public static void main(String[]a){Random r=new Random();for(int i=0;++i<11;)System.out.print((i%2>0?"bcdfghjklmnpqrstvwxz":"aeiouy").charAt(r.nextInt(6+(i%2)*14)));}}
Javascript, 85
Si se ejecuta desde la consola, se muestra la salida. La pantalla explícita agregaría
alert(s)
8 caracteres, aún más cortos que las otras soluciones JS.Gracias C5H8NNaO4 y Howard!
fuente
~~(###)
usted puede escribir lo###|0
que ahorra 4 caracteres.Javascript,
1351229686 caracteresfuente
PHP, 100 caracteres
fuente
Herramientas Unix: 73 bytes.
Y no se garantiza el tiempo de ejecución :)
El único problema es que la cadena generada comenzará con una "vocal" cada vez.
(editar: cambiado
' '
a''
en los argumentos de pegar) (otra edición: eliminado -P de las opciones de grep, gracias a manatwork )fuente
grep
parámetros. Tengo "de e ap ag ak".-a
que sería suficiente.-P
es la indicada . Parece que el hombre advierte sobre su estado altamente experimental con una razón. (grep
2.16) Pero de todos modos, funciona bien sin él-P
.-P
en primer lugar. Editaré mi respuesta.tr -d \\n
es más corto para unir las líneas.Pyth, 26 caracteres
Puedes probarlo en el compilador en línea aquí.
Alguien publicó un desafío muy similar, pero se cerró después de que hice una solución. No me di cuenta, pero esta pregunta en realidad es anterior a la creación de Pyth. De todos modos, aquí está el desglose:
Cada vez que se ejecuta el bucle, J cambia de ser una lista de consonantes a una lista de vocales. De esa manera, podemos elegir una letra aleatoria de J cada vez.
Puede haber una manera de inicializar J en el bucle o eliminar las asignaciones explícitas del bucle, pero aún no he tenido éxito con ninguno.
fuente
APL
3026La explicación es muy similar a la versión anterior a continuación, solo se reordenó un poco para desarrollar la solución.
Nota: ⎕IO se establece en 0
Explicación:
Tryapl.org
fuente
('AEIOUY'∪⎕A) ≡ (∪'AEIOUY',⎕A)
pero es un byte más corto.⎕A
otro byte:,('EIOUY'∪⎕A)[6(|,+)⍪5?20]
PHP 79 bytes
Bastante conciso.
fuente
C: 101
fuente
Javascript,
10487jugó un montón de cosas simples e innecesarias, aún no tan bonitas como las de los copys
Ah, y ese solo funcionó durante el golf: "dydudelidu"
Ahora probé uno usando el enfoque de 2 caracteres a la vez. Resulta que es casi lo mismo que el segundo de las copias, así que no puedo contarlo, también en 79.
a="";for(e=5;e--;)a+="bcdfghjklmnpqrstvwxz"[m=0|20*Math.random()]+"aeiouy"[m%6]
fuente
Brachylog , 9 bytes
Pruébalo en línea!
Da salida como una lista de letras a través de la variable de salida.
fuente
F # , 166 caracteres
fuente
K, 40 bytes
5?"abc"
generará 5 letras al azar de la cadena dada.5?/:
generará 5 letras al azar de cada una de las cadenas a la derecha, produciendo dos listas.+
transpone esas dos listas, dándonos una lista de tuplas con un carácter aleatorio de la primera lista y luego uno de la segunda lista.,/
es "raze": fusiona todas esas tuplas en secuencia.K5 puede hacer esto en 33 bytes construyendo el alfabeto de manera más inteligente y luego usando "excepto" (
^
) para eliminar las vocales, pero K5 es demasiado nuevo para ser legal en esta pregunta:fuente
R, 83 bytes
Genere todas las secuencias vocales-consonantes posibles en una matriz, luego muestree aleatoriamente 5 de ellas, produciendo una palabra de 10 letras.
fuente
05AB1E , 10 bytes
Pruébelo en línea o salidanorte cantidad de palabras al azar .
Explicación:
Muy claro:
fuente
Jalea , 13 bytes
Explicación:
Pruébalo en línea!
fuente