Étant donné une chaîne d'entrée, écrivez un programme qui génère le nombre total de lignes et de courbes qu'il possède.
Le défi
- Prendre des entrées à partir de
STDIN
, ou toute autre méthode d'entrée. - Sortie vers
STDOUT
, ou toute autre méthode de sortie, le nombre total de lignes et de courbes contenues dans la chaîne, dans cet ordre , en fonction du tableau ci-dessous dans l'extrait de code. - Tous les caractères non alphanumériques doivent être ignorés.
- Les failles standard sont interdites.
- C'est le code-golf , donc le code le plus court l'emporte.
Clarifications
- Les lignes et les courbes sont déterminées par la police utilisée sur Stackexchange pour
code blocks
. - Les cercles (comme
O, o, 0
) et les points (i, j
) sont considérés comme une courbe chacun. - L'entrée peut être une chaîne, une liste de caractères, un flux de caractères, des bytecodes, etc.
- La sortie peut être un tableau d'entiers, tuple d'entiers, chaîne séparés par des virgules, etc. Les deux numéros doivent être séparés, donc
104
n'est pas valable, mais10,4
,10 4
,10\n4
,[10,4]
,(10, 4)
, etc. est. - L'espace de tête et de fuite est parfaitement acceptable.
Exemple d'entrée et de sortie
# 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
Table de caractères
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 courbes ou 1? La tige est-elle à laj
fois en ligne et en courbe? Il serait préférable de simplement lister les valeurs requises pour toutes les lettres.o
devrait être 0 lignes, 1 courbeRéponses:
Haskell,
214199188175 octetsEssayez-le en ligne!
Les nombres de lignes et de courbes sont les chiffres des nombres en base 5 et stockés en tant que nombres en base 16. La fonction se
g
traduit en base-5.Edit: -13 octets grâce à @cole.
la source
05AB1E ,
786965 octets-4 octets grâce à Kevin Cruijssen, allez voir sa meilleure réponse 05AB1E
Essayez-le en ligne!
Sorties comme [Courbe, Ligne]
Je suis vraiment mauvais à 05AB1E, je viens de le découvrir. Peut certainement économiser plus d'octets si je peux obtenir 05AB1E à faire
è
dans ma liste de listesExplication
la source
line curve
, noncurve line
.Output to STDOUT, or any other output method, the total number of lines and curves contained in the string, in that order
. Notez lein that order
, doncline curve
.[Line, Curve]
comme ordre de sortie, bien que ce soit une coïncidence et non intentionnelle).Gelée , 45 octets
Un lien monadique acceptant une liste de caractères qui donne une liste de (deux) entiers.
Essayez-le en ligne! Ou consultez la suite de tests .
Comment?
la source
Scala , 235 octets
Essayez-le en ligne!
Pas si petit, peut probablement être joué plus loin.
Remarque: Le littéral de chaîne de 52 caractères est comme un dictionnaire qui mappe un caractère à un autre caractère qui dénote le nombre de lignes et de courbes selon le tableau suivant:
la source
Python 2 ,
159154 octetsPour tout caractère
lines*4 + curves
donne une valeur de 0 à 16. La base-36 est utilisée pour coder ces valeurs (1 caractère = 1 valeur).-5 octets grâce à @Chas Brown
Essayez-le en ligne!
Python 2 , 141 octets
Il s'agit d'un portage de ma solution Python3. Cette version affiche une liste de longs caractères, donc elle ressemble à la
[4L, 2L]
place de[4, 2]
.Essayez-le en ligne!
la source
'/'<x<'{'
au lieu dex.isalnum()
.'/'<x<'{'
, mais j'ai essayé de l'exprimer pour m'en débarrasserif
aussi.Gelée , 51 octets
Essayez-le en ligne!
Un lien monadique qui prend une chaîne en entrée et renvoie une liste d'entiers comme
[lines, curves]
la source
JavaScript (Node.js) ,
251 219217 octets-34 octets de @Expired Data : o
Essayez-le en ligne!
la source
Retina 0.8.2 , 160 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Dupliquez la chaîne d'entrée.
Comptez les lignes de chaque personnage sur la première ligne.
Comptez les courbes de chaque personnage sur la deuxième ligne.
Additionnez les chiffres séparément sur chaque ligne.
la source
R ,
164153 octetsEssayez-le en ligne!
J'ai eu la même idée que la réponse de Nimi en utilisant une base 5 encodage mais code sous forme de caractères ASCII au lieu de la base 16. Les utilisations
nomatch = 0
enmatch
éliminer les caractères non-alphanumériques.Retours
curves lines
.la source
Charbon de bois , 60 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Il s'agit d'un tableau de deux chaînes
13103202000101111131333201110112441331014323313243010202024433
et10120110212111112112002111111110001002110010010000112110100000
. Les chaînes sont ensuite mappées.Les éléments de l'entrée sont filtrés pour savoir s'ils sont contenus dans les (62) caractères de l'alphabet de conversion de base par défaut.
Les éléments qui restent sont ensuite convertis à partir de la base (62) et ceci est ensuite indexé dans la chaîne mappée.
Les chiffres sont additionnés et convertis en chaîne pour une impression implicite.
la source
Python 3 ,
165159148146 octetsPour tout caractère (y compris non alphanumérique)
lines*3 + curves
donne une valeur de 0 à 12, nous pouvons donc utiliser un long numéro de base 13 pour coder les données. Pour le raccourcir, il est converti en base-36.Merci à @Chas Brown pour ses bons conseils.
-2 octets en convertissant lambda en programme.
Essayez-le en ligne!
la source
Python 2 ,
179166165163 octetsEssayez-le en ligne!
Renvoie une liste
[curves, lines]
.la source
Python 2 , 525 octets
Essayez-le en ligne!
Approche similaire à l'implémentation de référence mais un peu plus courte.
la source
Perl 5
-MList::Util=sum -p
, 180 octetsEssayez-le en ligne!
la source
05AB1E , 53 octets
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Voir cette astuce 05AB1E (sections Comment compresser les grands entiers? Et Comment compresser les listes d'entiers? ) Pour comprendre pourquoi
•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ
est101629259357674935528492544214548347273909568347978482331029666966024823518105773925160
et•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ5в
est[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]
.la source
Python 3 , 697 octets
Une première tentative simple. J'ai mis la table dans un dictionnaire, parcouru la chaîne, incrémenté certains compteurs et renvoyé un tuple. L'entrée est une chaîne.
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) , 157 octets
Essayez-le en ligne!
la source