Вызов
Марк студент, который получает свои N
оценки в каскадном виде в одну строку.
Задача состоит в том, чтобы отделить его оценки, зная, что каждый знак может быть только 0
или 1
или 2
или 3
или 4
или 5
или 6
или 7
или 8
или 9
или или 10
.
вход
N
натуральное число и одна строка.
Выход
Набор натуральных чисел.
пример
N, One line------------------> Set of marks
3, '843'---------------------> [8, 4, 3]
1, '0'-----------------------> [0]
2, '1010'--------------------> [10,10]
3, '1010'--------------------> [1,0,10] or [10,1,0]
4, '1010'--------------------> [1,0,1,0]
9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0]
12,'499102102121103'---------> [4, 9, 9, 10, 2, 10, 2, 1, 2, 1, 10, 3]
5, '71061'-------------------> [7, 1, 0, 6, 1]
11,'476565010684'------------> [4, 7, 6, 5, 6, 5, 0, 10, 6, 8, 4]
4, '1306'--------------------> [1, 3, 0, 6]
9, '51026221084'-------------> [5, 10, 2, 6, 2, 2, 10, 8, 4]
14,'851089085685524'---------> [8, 5, 10, 8, 9, 0, 8, 5, 6, 8, 5, 5, 2, 4]
11,'110840867780'------------> [1, 10, 8, 4, 0, 8, 6, 7, 7, 8, 0]
9, '4359893510'--------------> [4, 3, 5, 9, 8, 9, 3, 5, 10]
7, '99153710'----------------> [9, 9, 1, 5, 3, 7, 10]
14,'886171092313495'---------> [8, 8, 6, 1, 7, 10, 9, 2, 3, 1, 3, 4, 9, 5]
2, '44'----------------------> [4, 4]
4, '9386'--------------------> [9, 3, 8, 6]
правила
- Когда возможно несколько выходов, дайте только один выход.
- Только знак значения
10
стоит с двумя десятичными знаками, остальные - с одним десятичным. - Ввод и вывод может быть дан в любом удобном формате
- Нет необходимости обрабатывать неверный ввод
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
code-golf
string
array-manipulation
mdahmoune
источник
источник
n, 'string'
кода Python, который я использовал для получения пар из примера текстового блока с копией:spl = [item.split('-')[0] for item in text.split('\n')]
Ответы:
Brachylog ,
2321 байт-2 байта благодаря Fatalize
Попробуйте онлайн!
Вход представляет собой пару
[Line, N]
.Это моя первая программа на брахилоге, поэтому, вероятно, есть много возможностей для улучшения.
Это очень медленно, когда длина линии> 7.
Объяснение:
(*)
ịṫ?
проверяет, что нет начальных нулей. Он преобразует строку в целое число, а затем обратно в строку и сравнивает с исходной строкой.источник
ị
и для ведущего нуля проверки:h~c.{ℕ≤10}ᵛ&t~l
. Это, вероятно, медленнее, хотя деконкатенация на целых числах должна работать даже для неизвестных целых чисел через ограничения, что делает его неэффективным.h
иt
для получения первого / последнего элемента более эффективно, чем использование∋
для обоих (что в большинстве программ даже не будет работать)).Perl 6 , 25 байт
Попробуйте онлайн!
Блок анонимного кода, который принимает число и строку и возвращается как объект Match.
Объяснение:
источник
Python 3 , 47 байт
Попробуйте онлайн!
Принимает "одну строку" как строку байтов с необработанными байтами
\x00 - \x09
. Если это не приемлемо:Python 3 , 56 байт
Попробуйте онлайн!
Принимает "одну строку" в качестве строки.
источник
V ,
17, 12 байтовПопробуйте онлайн!
Я был доволен 17 байтами, но 05AB1E пришел вместе с 13, и я не мог оставить вызов без ответа. : D
HexDump:
Альтернативное решение:
К сожалению, это заменяет
10
с1 0
источник
Рубин , 57 байт
Попробуйте онлайн!
Это может оказаться не самым удачным подходом, но выглядит забавной идеей временно заменить
10
гексA
, что, кстати, также является высокой оценкой (если мы рассмотрим систему оценки AF :))источник
Haskell , 68 байт
Попробуйте онлайн!
Жадно беру 10 секунд, пока осталось больше цифр, чем отметок.
источник
JavaScript,
5752 байтаПопробуйте онлайн
источник
Python 3 ,
71 6859 байтвниз еще 9 байтов благодаря овс.
Попробуйте онлайн!
Я изначально пытался использовать
str.partition()
рекурсивно, но использованиеreplace
ударило меня по лицу вскоре после этого. Кто-нибудь может улучшить это?Кроме того, вот ссылка TIO, которую я использовал, чтобы превратить контрольные примеры во что-то более копируемое / вставляемое
источник
: [c
и'x' else
и10 for
<number>e
,<letter><number>
,f'
.lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]
.Haskell , 98 байт
Попробуйте онлайн или протестируйте все!
объяснение
Функция
s
делает все возможные разбиения, например:"1010"
становится[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
, обратите внимание, как самые длинные разбиения заканчиваются в начале (потому что1:0:y
предшествует раньше10:y
).Имея это в виду, мы можем взять все эти значения и отфильтровать
y
s, гдеy == take n y
сохраняются также расщепления, которые короче, чем требуется. Например,4
мы оставляем список тем же[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
.Теперь мы можем просто получить первый элемент в этом списке, потому что входные данные всегда будут действительны (например,
5!"1010"
тоже дадут[1,0,1,0]
, но нам не нужно обрабатывать это).Примечание: я как-то неправильно подсчитал ..
y==take n y
такой же длины какlength y==n
: Sисточник
Perl 5
-plF
, 39 байтПопробуйте онлайн!
источник
Чисто , 128 байт
Попробуйте онлайн!
источник
05AB1E , 13 байтов
Попробуйте онлайн! или как тестовый набор
объяснение
источник
JavaScript (Babel Node) ,
70 6959 байтПринимает вход как
(n)(line)
.Попробуйте онлайн!
комментарии
JavaScript (ES6),
6459 байтСохранено 5 байтов благодаря @ guest271314
Принимает вход как
(n)(line)
.Попробуйте онлайн!
комментарии
источник
s.match()
возвращает массив строк, но a"10"
может быть разбит на[1,0]
(2 целых числа) в функции обратного вызоваflatMap()
.eval(`[${s}]`.replace('1,0',10))
Java (OpenJDK 8) , 78 байт
Хороший однострочник, использующий потоковый API.
Попробуйте онлайн!
Как это устроено
источник
R , 63 байта
Хотя длина строки больше, чем
n
, замените следующие 10, которые вы достигнете, на":"
(символ ASCII после 9). Затем разделите на числа, взяв значение ASCII каждого символа в строке.Попробуйте онлайн!
источник
Красный , 91 байт
Попробуйте онлайн!
источник
Желе , 18 байт
Попробуйте онлайн!
источник