Dada una cadena de entrada, escriba un programa que genere el número total de líneas y curvas que tiene.
El reto
- Tomar entrada de
STDIN
, o cualquier otro método de entrada. - Salida a
STDOUT
, o cualquier otro método de salida, el número total de líneas y curvas contenidas en la cadena, en ese orden , según la tabla siguiente en el fragmento de código. - Cualquier carácter no alfanumérico debe ser ignorado.
- Las lagunas estándar están prohibidas.
- Este es el código de golf , por lo que gana el código más corto.
Aclaraciones
- Las líneas y curvas están determinadas por la fuente utilizada en Stackexchange para
code blocks
. - Se considera que los círculos (como
O, o, 0
) y los puntos (i, j
) son 1 curva cada uno. - La entrada puede ser una cadena, una lista de caracteres, una secuencia de caracteres, códigos de bytes, etc.
- La salida puede ser una matriz de enteros, tupla de números enteros, cadena separada por comas, etc. Los dos números deben ser separada, por lo que
104
no es válido, pero10,4
,10 4
,10\n4
,[10,4]
,(10, 4)
, y así sucesivamente es. - El espacio en blanco al comienzo y al final es perfectamente aceptable.
Muestra de entrada y salida
# Format: str -> line, curve
hi -> 4, 2
HELLO WORLD -> 20, 4
l33+ 5pEak -> 13, 8
+=-_!...?~`g@#$%^ -> 1, 2
9001 -> 5, 3
O o O o O o -> 0, 6
Tabla de caracteres
Char | Lines | Curves
0 | 1 | 1
1 | 3 | 0
2 | 1 | 1
3 | 0 | 2
4 | 3 | 0
5 | 2 | 1
6 | 0 | 1
7 | 2 | 0
8 | 0 | 2
9 | 0 | 1
A | 3 | 0
B | 1 | 2
C | 0 | 1
D | 1 | 1
E | 4 | 0
F | 3 | 0
G | 2 | 1
H | 3 | 0
I | 3 | 0
J | 1 | 1
K | 3 | 0
L | 2 | 0
M | 4 | 0
N | 3 | 0
O | 0 | 1
P | 1 | 1
Q | 0 | 2
R | 2 | 1
S | 0 | 1
T | 2 | 0
U | 0 | 1
V | 2 | 0
W | 4 | 0
X | 4 | 0
Y | 3 | 0
Z | 3 | 0
a | 0 | 2
b | 1 | 1
c | 0 | 1
d | 1 | 1
e | 1 | 1
f | 1 | 1
g | 1 | 2
h | 1 | 1
i | 3 | 1
j | 1 | 2
k | 3 | 0
l | 3 | 0
m | 3 | 2
n | 2 | 1
o | 0 | 1
p | 1 | 1
q | 1 | 1
r | 1 | 1
s | 0 | 1
t | 1 | 1
u | 1 | 1
v | 2 | 0
w | 4 | 0
x | 4 | 0
y | 1 | 1
z | 3 | 0
s
2 curvas o 1? ¿Es el talloj
tanto en línea como en curva? Sería mejor si pudiera enumerar los valores requeridos para todas las letras.o
debería ser 0 líneas, 1 curvaRespuestas:
Haskell,
214199188175 bytesPruébalo en línea!
Los números de líneas y curvas son los dígitos de los números de base 5 y se almacenan como números de base 16. La función se
g
traduce de nuevo a base-5.Editar: -13 bytes gracias a @cole.
fuente
05AB1E ,
786965 bytes-4 bytes gracias a Kevin Cruijssen, ve y mira su respuesta 05AB1E aún mejor
Pruébalo en línea!
Salidas como [Curva, Línea]
Soy realmente malo en 05AB1E. Me acabo de enterar. Definitivamente puedo guardar más bytes si puedo hacer que 05AB1E lo haga
è
en mi lista de listasExplicación
fuente
line curve
, nocurve line
.Output to STDOUT, or any other output method, the total number of lines and curves contained in the string, in that order
. Tenga en cuenta elin that order
, entoncesline curve
.[Line, Curve]
un orden de salida, aunque sea coincidente y no intencional).Jalea , 45 bytes
Un enlace monádico que acepta una lista de caracteres que produce una lista de (dos) enteros.
Pruébalo en línea! O vea el conjunto de pruebas .
¿Cómo?
fuente
Scala , 235 bytes
Pruébalo en línea!
No es tan pequeño, probablemente se pueda jugar más al golf.
Nota: El literal de cadena de 52 caracteres es como un diccionario que asigna un carácter a otro carácter que denota el número de líneas y curvas de acuerdo con la siguiente tabla:
fuente
Python 2 ,
159154bytesPara cualquier carácter
lines*4 + curves
da un valor de 0 a 16. Base-36 se usa para codificar estos valores (1 carácter = 1 valor).-5 bytes gracias a @Chas Brown
Pruébalo en línea!
Python 2 , 141 bytes
Este es un puerto de mi solución Python3. Esta versión genera una lista de entradas largas, por lo que parece en
[4L, 2L]
lugar de[4, 2]
.Pruébalo en línea!
fuente
'/'<x<'{'
lugar dex.isalnum()
.'/'<x<'{'
, pero traté de expresarlo para deshacerme de élif
también.Jalea , 51 bytes
Pruébalo en línea!
Un enlace monádico que toma una cadena como entrada y devuelve una lista de enteros como
[lines, curves]
fuente
JavaScript (Node.js) ,
251 219217 bytes-34 bytes de datos @ expirados : o
Pruébalo en línea!
fuente
Retina 0.8.2 , 160 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Explicación:
Duplicar la cadena de entrada.
Cuente las líneas de cada personaje en la primera línea.
Cuenta las curvas de cada personaje en la segunda línea.
Suma los dígitos por separado en cada línea.
fuente
R ,
164153bytesPruébalo en línea!
Yo tenía la misma idea que la respuesta de Nombre del modelo utilizando una codificación de base 5, pero codifica como caracteres ASCII en lugar de la base 16. Usos
nomatch = 0
enmatch
eliminar caracteres no alfanuméricos.Las devoluciones
curves lines
.fuente
Carbón , 60 bytes
Pruébalo en línea!El enlace es a la versión detallada del código. Explicación:
Esta es una matriz de dos cadenas
13103202000101111131333201110112441331014323313243010202024433
y10120110212111112112002111111110001002110010010000112110100000
. Las cadenas se asignan a continuación.Los elementos de la entrada se filtran sobre si están contenidos dentro de los (62) caracteres del alfabeto de conversión base predeterminado.
Los elementos que quedan se convierten de la base (62) y luego se indexa en la cadena asignada.
Los dígitos se suman y vuelven a la cadena para la impresión implícita.
fuente
Python 3 ,
165159148146 bytesPara cualquier carácter (incluidos los no alfanuméricos)
lines*3 + curves
obtiene un valor de 0 a 12, por lo que podemos usar un número largo de base 13 para codificar datos. Para acortarlo, se convierte a base-36.Gracias a @Chas Brown por sus buenos consejos.
-2 bytes al convertir lambda a programa.
Pruébalo en línea!
fuente
Python 2 ,
179166165163 bytesPruébalo en línea!
Devuelve una lista
[curves, lines]
.fuente
Python 2 , 525 bytes
Pruébalo en línea!
Enfoque similar a la implementación de referencia pero algo más corto.
fuente
Perl 5
-MList::Util=sum -p
, 180 bytesPruébalo en línea!
fuente
05AB1E , 53 bytes
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
Vea esta sugerencia mía 05AB1E (secciones ¿Cómo comprimir enteros grandes? Y ¿Cómo comprimir listas enteras? ) Para comprender por qué
•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ
es101629259357674935528492544214548347273909568347978482331029666966024823518105773925160
y•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ5в
es[1,0,2,0,0,2,1,0,1,2,0,3,2,0,1,1,0,3,1,1,0,3,0,3,0,4,0,4,0,2,1,0,0,2,1,0,1,2,2,0,1,1,1,0,0,3,0,4,0,2,0,3,1,1,0,3,0,3,1,2,0,3,0,4,1,1,1,0,2,1,0,3,0,3,1,1,0,4,0,4,0,2,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,2,2,3,0,3,0,3,2,1,1,3,1,1,2,1,1,1,1,1,1,1,1,0,1,1,2,0]
.fuente
Python 3 , 697 bytes
Un simple primer intento. Puse la mesa en un diccionario, recorrí la cadena, incrementé algunos contadores y devolví una tupla. La entrada es una cadena.
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 157 bytes
Pruébalo en línea!
fuente