Escriba un programa que obtenga una cadena como entrada y cuente la cantidad de caracteres alfanuméricos y no alfanuméricos que contiene. Tiene que mostrar su resultado así:
entrada: http://stackexchange.com
salida:20 + 4 = 24
El problema es que su código fuente debe tener el mismo número de caracteres alfanuméricos que los no alfanuméricos. No se permiten comentarios, se ignora el espacio en blanco. (El lenguaje llamado Whitespace podría competir por votos, pero obviamente no será seleccionado como ganador)
Los caracteres en el código deben tener al menos alguna justificación menor, no deben ser completamente superfluos. Por ejemplo, se permiten nombres de variables más largos, en i = (j*3)+4;
lugar de i = j*3+4;
también. Sin embargo, i = i + 1;;;;;;
no lo es.
Además de esto, se aplican las reglas estándar de código de golf.
O.
,O?
yO!
a continuación, cualquier programa que cumple con la restricción de escritura clase de caracteres ... Por supuesto, es probable que pierda en el negocio de longitud.Respuestas:
Perl, 32 + 32 = 64
La cadena se espera en STDIN. La salida se escribe en STDOUT. El espacio en blanco se ignora. Mi interpretación de la tarea es que el programa debería poder ejecutarse solo para obtener el puntaje.
Ungolfed con comentarios
Encontré varias variaciones con el mismo número de bytes, por ejemplo:
Ejemplos
Ejemplo de la pregunta:
Corriendo sobre sí mismo (
a.pl
):El tamaño del archivo es 104 bytes, por lo que 40 bytes se ignoran como espacios en blanco.
Perl, 29 + 29 = 58
La cadena se espera en STDIN y está limitada a la primera línea. El resultado se imprime en STDOUT. El espacio en blanco se ignora.
Sin golf
Ejemplos
El archivo
a.pl
contiene el script Perl.Ejemplo de la pregunta:
Corriendo sobre sí mismo:
El tamaño del archivo
a.pl
es de 65 bytes, por lo tanto, 7 bytes se ignoran como espacios en blanco.fuente
C - 96 (48 + 48) caracteres
Es algo legible. Sin embargo, hay margen de mejora.
fuente
Bash + coreutils, 72 caracteres (36 + 36) sin espacios en blanco
Salida:
Respuesta anterior:
Pure Bash, 92 (46 + 46) caracteres que no son espacios en blanco
Salida:
fuente
PowerShell (43 + 43 = 86)
Golfed
Sin golf
Prueba
Prueba con el código en sí para pasar los criterios
"
se ha escapado con `que no es parte de la cadena.fuente
GolfScript, 74 caracteres (= 37 + 37)
Prueba en línea para el código con el código como entrada.
fuente
Rubí 38 + 38 = 76
Este programa cuenta la nueva línea final en la entrada.
El recuento de caracteres lo realiza el propio programa:
$ ruby alphabalance.rb alphabalance.rb
:)fuente
Powershell, 70 bytes (= 35 + 35)
Script de prueba:
Salida:
Powershell, 70 bytes (= 35 + 35), alternativa
fuente
Python 2 (60 + 60 = 120)
Difícil, probablemente hay margen de mejora. Como el hecho de que la función en sí misma se puede usar para evaluar su propio equilibrio alfanumérico.
Prueba:
fuente
repr
.C ++, 146 (73 + 73)
178 (89 + 89) caracteres queno son espacios en blanco #Original incluido
<algorithm>
sin ninguna buena razón. UpsSolo estoy contando caracteres en las líneas después
//Code itself starts here
. En particular, esto significa no contar#include <string>
. También cuento los trigrafos como tres caracteres cada uno, lo cual es quizás discutible. Tenga en cuenta que al probar el programa en su propio código fuente se requiere cierto cuidado para evitar el reemplazo de trigraph dentro del literal de cadena.Aquí hay algunas decisiones de diseño peculiares: en la mayoría de los códigos de producción no encontrará trigrafos y bucles basados en rango en la misma función, pero creo que todo está dentro de los límites de 'justificable'.
fuente
pitón 52 +52 = 104
Desafío interesante porque python evita caracteres no alfanuméricos.
Justificación menor para usar el corte: lo acelera (¿tal vez?)
fuente
print
que no requiere paréntesis, y usa el'%d + %d = %d' % (a,l-a,l)
método. Eso debería salvar a algunos personajes.Julia, 64
Todos los únicos caracteres no alfanuméricos innecesarios son el último
;
y algunos de los()
del formato de cadena., Salió casi perfectamente equilibrado, y como una potencia de 2 sin mucho violín.fuente
perl, 64 caracteres que no son espacios en blanco:
Aclarado ligeramente a través de perl -MO = Deparse y algunos comentarios:
El ORS, $ \ se agrega automáticamente en cada llamada a imprimir, colocando el recuento total al final.
fuente
Pitón 2, 50 + 50 = 100
Ejecútelo aquí: http://repl.it/8CH
fuente
Rebol (64 + 64 = 128)
Ejemplo de uso (en la consola Rebol):
NÓTESE BIEN. El programa ignora espacios, pestañas y nuevas líneas de conteos.
fuente
J - 46 + 46 = 92
Cuenta los espacios en blanco, por lo que no puede realizar una autocomprobación sin una modificación. Toma entrada en stdin. Tiene mala boca, debe ir a lavar con jabón.
Uso:
fuente
Javascript - 76 (38 + 38)
Entrada de muestra:
http://stackexchange.com
Salida:
20 + 4 = 24
Corriendo en uno mismo:
PD Para aquellos preocupados por
(o + $)
hacer para mantener el equilibrio alfanumérico, no es así. Porque después de ver ao + " + "
JS, todos decidirían+
ser concatenadores de cadenas en lugar de sumadores numéricos. Por lo tanto, los paréntesis son necesarios, o20 + 4
se convertirían204
lugar de24
: D¡Feliz codificación!
fuente
Clojure: (31 + 31 = 62) caracteres que no son espacios en blanco
Salida:
fuente
CJam, 27 + 27 = 54
CJam es un par de meses más nuevo que este desafío, por lo que esta respuesta no es elegible para la marca de verificación verde. ¡Sin embargo, fue un ejercicio divertido!
Toma la cadena de entrada como un argumento de línea de comandos, por lo que no funcionará en el intérprete en línea, pero puede probarlo con el intérprete de Java .
Explicación
fuente