Учитывая список N
целых чисел, каждое N
из которых содержит цифры, выведите число, которое отличается от первого числа из-за первой цифры, второго числа из-за второй цифры и т. Д.
пример
Учитывая этот список:
1234
4815
1623
4211
Число 2932
«s первая цифра отличается от первой цифры первого номера, его вторая цифра отличается от второй цифры второго числа в и т.д. Поэтому было бы действительным выходом.
входные
- Вы можете взять как список, так и в
N
качестве входных данных, или только список, если хотите. - Каждое целое число в списке обязательно будет иметь столько цифр, сколько длина списка (
N
) - Числа не будут иметь начальных нулей
- Входной список должен содержать цифры, а не строки.
- Вы можете принимать входные данные как аргументы функции, через
STDIN
или что-нибудь подобное. - Вы можете предположить, что список не будет длиннее 10 элементов (и ни один номер в списке не будет больше, чем
2147483647
)
Выходы
- Недостаточно, чтобы вывод не был в списке. Цифры должны отличаться, как описано выше.
- Вы можете использовать любую стратегию выбора цифр, которая учитывает ограничение различных цифр.
- Число не может иметь начальные нули
- Вы можете вывести число через
STDOUT
, вернуть его из функции и т. Д.
Контрольные примеры
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
счет
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
code-golf
number
number-theory
Fatalize
источник
источник
STDIN
целое число перед анализом?STDIN
это строка по умолчанию ...Ответы:
Желе,
87 байт1 байт сохранен благодаря Денису.
Попробуйте онлайн!
объяснение
Преобразует каждую цифру в
1
, кроме0
и1
становится2
.источник
CJam (
1514 байт)Онлайн демо
Спасибо Аднану за однобайтовую экономию.
рассечение
источник
i2%)
может быть49&)
работа непосредственно с символами, а не с кодами ASCII.Python 2,
4745 байтСпасибо @xnor за 2 байта!
Проверьте это на Ideone .
Как это устроено
`x`
дает строковое представление списка x .Для первого теста это дает строку
[1::n+3]
извлекает каждый (n + 3) -й символ - где n - длина x, начиная со второго. С учетом 2 символов,
мы получаем первую цифру первого числа, вторую цифру второго числа и т. Д.Теперь возьмем число по модулю 10 n ÷ 2, чтобы отобразить первую цифру в диапазоне [0, 4] .
Для 93579135 мы получаем 93579135% 50000000 = 43579135 .
Наконец, мы добавляем 10 n ÷ 9 к последнему результату, который увеличивает (оборачивая от 9 до 0) все цифры на 1 (без переноса) или 2 (с переносом).
Для 43579135 мы получаем 43579135 + 11111111 = 54690246 .
источник
MATL,
11109 байтПринимает в качестве входных данных только вектор-столбец целых чисел.
N
не предоставляетсяПопробуйте онлайн
объяснение
источник
2
: matl.tryitonline.net/…VXd9\QV!U
Pyth, 11 байт
Простой цикл, измените каждую цифру на 1, за исключением того, что 1 становится 2.
источник
Q
иk
! Вы можете сохранить один байт во время преобразования цифр, хотя:s.eh-12@`b
Сетчатка,
393837Сохранено 1 байт, спасибо Мартин!
Требуется завершающий перевод строки на входе.
Получает диагонали и переводит 0 и 2-9 в 1 и 1 в 2.
Основная идея для получения диагоналей состоит в том, чтобы выдвинуть захват для каждой строки над текущей строкой и затем использовать захват, чтобы соответствовать символу, а затем сохранить следующий символ.
Попробуйте онлайн
источник
J,
2622 байтаПодобный подход к другим, используя
<= 1
иincrement
метод по диагонали.использование
Требуется только список целых чисел в качестве аргумента.
источник
Python 2, 54 байта
источник
-~n
Ява, 94 байта
Чисто числовые операции на победу! :)
Пример ввода / вывода:
Полная программа (с негольфированным кодом):
источник
Java, 93 байта
Ungolfed
Выход
источник
J 37 байт
Возможно, можно играть в гольф, но я забыл, была ли команда для «диагоналей».
источник
n
с помощью<list> (#:~#&10) <n>
. Первая диагональ может быть найдена с помощью(< 0 1) |: <list>
где(< 0 1)
находится поле для выбора осей, используя оба, с|:
Reng v.3.3, 60 байт
Для Ренга это было довольно просто. Попробуй это здесь!Ввод представляет собой разделенный пробелами список чисел.
1: init
k
это количество входов (число чисел), и мы уменьшаем на 1 и восстанавливаем для этапа цикла.aií
принимает все входные данныеr
переворачивает стек для обработки ввода.1ø
переходит на следующую строку.2: петля
1[
берет верхний элемент из стека и в новый стек.å
разбивает его на цифры.{$}
выдвигает блок кода, содержащий операцию «отбрасывание»; это повторяетсяk
times (k*
), и блок кода удаляется ($
.k1-#k
декрементыk
.)9(
помещает9
в STOS и-
вычитает TOS из STOS.#o
сохраняет это числоo
иa$;
удаляет все элементы стека.]
закрывает родительский стек.o
помещаетo
обратно в вверху; это наша цифра, которую мы сохраняем.)
перемещает ее в нижнюю часть, чтобы мы могли продолжить наш цикл.s
обычно проверяет отсутствие ввода (т. е. равенство-1
), но мы можем использовать ее, чтобы выйти из цикла, когдаk == -1
. Такs^
идет вверх, когдаk == -1
.$
выпадаетk
из стека, и наш цикл начинается снова.3: финал
<
направляет указатель влево и$
сбрасываетk
из стека.b
это левое зеркало, поэтому мы входим через него, но при ударе оно приходит в норму, зеркало;
с состоянием стека.!n
печатает цифру, если и только если мы идем налево.~
завершает программу, когда мы закончим печать.источник
Mathematica 52 байта
Это следует подходу Питера Тейлора и других (без использования кодов Ascii).
пример
источник
ClojureScript, 58 символов
Требования к типу делали это немного дольше, чем необходимо, и
map-indexed
так много символов не помогло.Часто мои представления также являются допустимыми Clojure, но это использует некоторую утечку ClojureScript с JavaScript. Вычитание числа и строки приводит строку к числу, то есть
(- 9 "5")
равно4
.источник
PHP, 46/41/40 байт
Различные цифровые селекторы для сравнения. Я думал, что «9-значный» будет самым коротким, но особый случай, необходимый для сохранения нуля в первой цифре, переполняет его.
ФРС от аргументов CLI:
источник
Рубин, 21 байт
Полная программа. Беги с
-n
флагом. Использует следующее отображение:n -> n%2+1
.источник
JavaScript (ES6), 41
Трюк% 9 + 1 заимствован из ответа Сьювера. На этот раз
.reduce
бьет.map
. Обратите внимание, что+=
оператор используется, чтобы избежать скобок.источник
Perl, 18 байт
Включает +1 для
-p
Запустите со строками ввода на STDIN. Выходное значение равно 1, за исключением 2 при диагонали 1
cantor.pl
источник
Pyth, 14 байт
Попробуйте онлайн!
источник