Учитывая входную строку, напишите программу, которая выводит общее количество линий и кривых, которые она имеет.
Соревнование
- Возьмите ввод
STDIN
или любой другой метод ввода. - Вывести в
STDOUT
или любой другой метод вывода общее количество линий и кривых, содержащихся в строке, в указанном порядке на основе приведенной ниже таблицы в фрагменте кода. - Любые не алфавитно-цифровые символы следует игнорировать.
- Стандартные лазейки запрещены.
- Это Код-гольф, поэтому самый короткий код выигрывает.
Разъяснения
- Линии и кривые определяются шрифтом, используемым в Stackexchange для
code blocks
. - Круги (как
O, o, 0
) и точки (i, j
), считаются 1 кривой каждый. - Входными данными могут быть строка, список символов, поток символов, байт-коды и т. Д.
- Выход может быть массивом целых чисел, набор целых чисел, разделенных запятыми строки и т.д. Эти два числа должны быть разделены, так что
104
не является действительным, но10,4
,10 4
,10\n4
,[10,4]
,(10, 4)
, и так далее есть. - Заголовок и конечный пробел вполне приемлемы.
Пример ввода и вывода
# 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
Таблица символов
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 кривых или 1? Является ли ствол вj
линии и кривой? Было бы лучше, если бы вы могли просто перечислить необходимые значения для всех букв.o
должно быть 0 линий, 1 криваяОтветы:
Haskell,
214199188175 байтовПопробуйте онлайн!
Числа линий и кривых являются цифрами чисел основания-5 и хранятся в виде чисел основания-16. функция
g
переводит обратно в базу-5.Изменить: -13 байт благодаря @cole.
источник
05AB1E ,
786965 байт-4 байта благодаря Кевину Круйссену, пойди и проверь его еще лучше 05AB1E ответ
Попробуйте онлайн!
Выходы как [Кривая, Линия]
Я действительно плох в 05AB1E, я только что узнал. Можно определенно сохранить больше байтов, если я смогу заставить 05AB1E делать
è
через мой список списковобъяснение
источник
line curve
, нетcurve line
.Output to STDOUT, or any other output method, the total number of lines and curves contained in the string, in that order
. Обратите вниманиеin that order
, такline curve
.[Line, Curve]
порядком вывода, хотя это совпадение, а не преднамеренное).Желе , 45 байт
Монадическая ссылка, принимающая список символов, который выдает список (двух) целых чисел.
Попробуйте онлайн! Или посмотрите набор тестов .
Как?
источник
Scala , 235 байт
Попробуйте онлайн!
Не такой маленький, наверное, дальше можно играть в гольф.
Примечание: строковый литерал из 52 символов похож на словарь, который отображает символ на другой символ, который обозначает количество линий и кривых в соответствии со следующей таблицей:
источник
Python 2 ,
159154 байтаДля любого персонажа
lines*4 + curves
дает значение от 0 до 16. Base-36 используется для кодирования этих значений (1 символ = 1 значение).-5 байт благодаря @Chas Brown
Попробуйте онлайн!
Python 2 , 141 байт
Это порт моего решения Python3. Эта версия выводит список длинных целочисленных значений, поэтому он выглядит как
[4L, 2L]
вместо[4, 2]
.Попробуйте онлайн!
источник
'/'<x<'{'
вместоx.isalnum()
.'/'<x<'{'
, но я попытался выразить это, чтобы избавиться и от этогоif
.Желе , 51 байт
Попробуйте онлайн!
Монадическая ссылка, которая принимает строку в качестве входных данных и возвращает список целых чисел в виде
[lines, curves]
источник
JavaScript (Node.js) ,
251 219217 байт-34 байта из @Expired Data : o
Попробуйте онлайн!
источник
Сетчатка 0.8.2 , 160 байт
Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Объяснение:
Дублируйте входную строку.
Подсчитайте строки каждого персонажа в первой строке.
Подсчитайте кривые каждого персонажа во второй строке.
Суммируйте цифры отдельно в каждой строке.
источник
R ,
164153 байтПопробуйте онлайн!
У меня была та же идея, ответ Ними в использовании кодирования базы 5 , но кодирует как ASCII символов вместо основания 16. Использование
nomatch = 0
вmatch
устранить не буквенно-цифровые символы.Возвращает
curves lines
.источник
Древесный уголь , 60 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Это массив из двух строк
13103202000101111131333201110112441331014323313243010202024433
и10120110212111112112002111111110001002110010010000112110100000
. Затем строки сопоставляются.Элементы ввода фильтруются по тому, содержатся ли они в (62) символах базового алфавита преобразования по умолчанию.
Оставшиеся элементы затем преобразуются из базы (62), а затем индексируются в отображенную строку.
Цифры суммируются и возвращаются в строку для неявной печати.
источник
Питон 3 ,
165159148146 байтДля любого символа (включая не алфавитно-цифровой)
lines*3 + curves
дается значение от 0 до 12, поэтому мы можем использовать длинное число base-13 для кодирования данных. Чтобы сделать его короче, он конвертируется в base-36.Спасибо @Chas Brown за отличные советы.
-2 байта путем преобразования лямбда в программу.
Попробуйте онлайн!
источник
Python 2 ,
179166165163 байтаПопробуйте онлайн!
Возвращает список
[curves, lines]
.источник
Python 2 , 525 байт
Попробуйте онлайн!
Аналогичный подход к эталонной реализации, но несколько короче.
источник
Perl 5
-MList::Util=sum -p
, 180 байтПопробуйте онлайн!
источник
05AB1E , 53 байта
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
Посмотрите этот мой совет 05AB1E (разделы Как сжимать большие целые числа? И Как сжимать целочисленные списки? ), Чтобы понять, почему
•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ
есть101629259357674935528492544214548347273909568347978482331029666966024823518105773925160
и•xþ¢*>ÌŸÑå#÷AUI'@æýXÁи<¥èå–ΘηžÎà₅åǚĕ5в
есть[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]
.источник
Python 3 , 697 байт
Простая первая попытка. Я поместил таблицу в словарь, перебрал строку, увеличил некоторые счетчики и возвратил кортеж. Ввод - это строка.
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 157 байт
Попробуйте онлайн!
источник