Entrada
Una lista de palabras separadas por cualquier número de espacios.
Salida
Un gráfico de arte ASCII horizontal, donde la enésima línea está compuesta por tantos asteriscos ( *
) como la enésima palabra es larga.
Ejemplo de uso
Las >
señales de entrada del usuario, no debe ingresarlo al probar el programa.
> This is an example histogram of word length
****
**
**
*******
*********
**
****
******
> a aa aaa aaaa aaaaa
*
**
***
****
*****
> double space example
******
*****
*******
Implementación de referencia
En caso de duda sobre la especificación, la salida de su programa debe coincidir exactamente con la del programa siguiente en todas las entradas.
puts gets.chomp.split.map{|word| '*' * word.length}.join("\n")
Respuestas:
Retina , 5 + 3 = 8 bytes
Cada línea va en su propio archivo, así que agregué 1 byte por cada archivo adicional. Además,
\n
debe reemplazarse por una nueva línea real.Cada par de líneas es un par de reemplazo de patrones.
+
coincide con uno o más espacios y lo reemplaza con una nueva línea..
coincide con cualquier carácter, excepto una nueva línea, y lo reemplaza con un*
. Esto se aplica globalmente, por lo que cada personaje se reemplaza con un*
.fuente
Pyth, 9 bytes
Explicación:
fuente
CJam, 10 bytes
Cómo funciona :
Pruébalo en línea aquí
fuente
R - 33
dónde
scan(,"")
lee desde stdin y se divide en espacios en blanco en un vector de caracteres.gsub(".", "*", ...)
reemplaza todos los personajes en*
.write(..., "")
imprime en stdout con "\ n" como separador predeterminado.fuente
Python 3, 43 bytes:
Gracias a @BetaDecay por señalar un error de sintaxis.
Ejecución de muestra:
(La siguiente cadena se ingresa como literal, en lugar de como texto)
Bonus: histograma vertical
Gracias a @Caridorc por señalar mi error que hizo que los bonos tuvieran de 1 a muchas filas.
Manifestación:
Bonificación: histograma vertical (al revés)
Manifestación:
fuente
R, 38 bytes (con algo de ayuda en los comentarios)
Cómo funciona
gsub
reemplaza todos los espacios sin con*
gsub
agrega\n
(nueva línea) al final de cada elementocat
imprime en consecuenciaManifestación
fuente
> <> ,
3837 BytesMaldición, caja de doble espacio * sacude pescado *.
Puede probarlo en línea (todo lo que necesita hacer es ingresar datos a través del campo cerca de la parte inferior y luego presionar el botón
Give
botón). Las sugerencias para seguir jugando al golf son siempre bienvenidas, especialmente ideas para eliminar esos espacios derrochadores frente a la segunda y tercera línea.Si se le permitiera imprimir una nueva línea adicional para espacios adicionales, el código podría ser de 27 bytes :
Explicación
Nota: el orden de la explicación corresponderá a la ubicación del puntero (por lo tanto, si el código se explica fuera de lo que uno consideraría orden, es porque es el orden en que el puntero lo ejecuta).
Línea 1:
Línea 2:
Línea 3:
Nota: esta línea va en reversa, así que lea de derecha a izquierda.
Básicamente, la prueba del programa para asegurarse de que la entrada (que se lee un carácter a la vez) no es un espacio y luego imprime un asterisco. Termina si no hay entrada (el valor de entrada es -1). Para asegurarse de que no imprime nuevas líneas adicionales, utiliza el valor de registro, que establece en 0 o 1. Debido a la forma en que lo configuré, no le importan los valores extraños introducidos en la pila (p. Ej. el valor del registro cuando lo establece
1
después de imprimir un asterisco); permanecen en la pila cuando finaliza el programa pero no hacen nada.Sé que puede ser un poco confuso desde que lo usé
84*
y en67*
lugar de" "
y"*"
respectivamente, pero eso fue porque no tenía ganas de poner cadenas en el programa por cualquier razón.fuente
Javascript ES6
Función, 46 caracteres
Programa, 55 caracteres
fuente
"f=s=>s.replace(/\S/g,'*').replace(/\s+/g,'\n')".length
medir la longitud y me olvidé\
.Perl, 16 bytes (15 caracteres +
-p
)Correr como:
Ahorré un byte adicional, gracias a @ThisSuitIsBlackNot , ¡no me había encontrado
y///s
antes!fuente
y/ /\n/s;
Gema,
119 caracteresEjecución de muestra:
fuente
PHP 5.3,
55535150 bytesUso:
Llame al Script y defina una variable global ($ a)
php -d error_reporting=0 script.php?a="This is an example histogram of word length"
Salida:
fuente
Java, 102 bytes
fuente
Haskell, 31 bytes
Ejemplo de uso:
fuente
putStr.
conf=
para reducir el recuento de bytes, o usar enmain=interact$
lugar deputStr.
leer desde STDIN y convertirlo en un programa completof=unlines.map(>>"*").words
devuelve algo parecido"****\n**\n**\n"
y no genera un "gráfico de arte ASCII horizontal" como se solicitó.CJam, 11 bytes
Compitiendo por el segundo lugar en CJam después de que @Optimizer encontró una solución inteligente de 10 bytes. Esta es una solución sencilla de 11 bytes:
Pruébalo en línea
Solución alternativa que utiliza un bucle en lugar de los dos mapas, también 11 bytes:
Explicación para la primera solución:
fuente
JavaScript (ES6), 37
Versión más corta usando solo uno
replace
.fuente
J, 10 bytes
Bono: vertical (12 bytes)
Bono: invertido vertical (14 bytes)
fuente
Python 3, 72 bytes
Un buen trazador de líneas :)
Salida:
Hay una nueva línea final aquí. Si lo quieres sin, debes agregar 5 bytes:
fuente
Julia, 50 bytes
Esto crea una función sin nombre que toma una cadena como entrada e imprime en STDOUT.
Sin golf:
fuente
JavaScript (ES5)
Programa, 54 caracteres
Función, 60 caracteres
Ejemplo de uso:
fuente
Matlab - 54 bytes
Esto se ejecuta desde la consola, tomará una cadena de entrada
stdin
y generará el gráfico de palabra horizontal enstdout
:Ejemplo:
O podríamos intentar hacer algunas formas elegantes:
fuente
Matlab / Octave, 75 bytes
Usando una función anónima:
Gracias a Hoki por detectar un error que evitó que se detectara la última palabra.
Ejemplo de uso (Matlab):
O pruébelo en línea (Octave).
fuente
PowerShell,
3531 bytesBastante competitivo para un cambio. Go go gadget operadores unarios. También sigo olvidando que los parens en algunas funciones, como
-split
y que se-replace
usan aquí, son opcionales.Llamado a través de la entrada de canalización (equivalente a stdin para PowerShell):
Como beneficio adicional, si en su lugar podemos usar argumentos de línea de comandos, podemos bajar a 20 Bytes y tener algo que funcione con y sin una sola cadena como entrada:
fuente
Javascript (ES6)
Nueva solución (39 bytes):
Solución de expresiones regulares (42 bytes):
Solución no regex (71 bytes):
Estas soluciones definen funciones anónimas. Asignarlos a variables o llamarlos así:
fuente
SWI-Prolog, 40 bytes
Llamado con cadenas de código, por ejemplo
a(`This is an example histogram of word length`).
fuente
STATA, 72 bytes
Sin golf
Tenga en cuenta que este código no funciona en el intérprete en línea y requiere el intérprete STATA patentado no libre.
fuente
C ++ 14,
107106bytesfuente
K5, 31 bytes
fuente
O, 22 bytes
Explicación
fuente
Haz, 92 bytes
Esta no es una respuesta competitiva en absoluto y realmente bastante tarde, pero últimamente he estado jugando un poco con Beam y quería ver si podía lograrlo. Finalmente obtuve algo de éxito :)
Mostrar fragmento de código
fuente
AWK
ejemplos
salida:-
fuente