Вам будет предоставлена строка. Он будет содержать 9 уникальных целых чисел от 0 до 9. Вы должны вернуть пропущенное целое число. Строка будет выглядеть так:
@riker Это похоже на поиск пропущенного числа в последовательности. Это похоже на поиск цифры, отсутствующей в наборе.
DJMcMayhem
10
@Riker Я не думаю, что это дубликат, учитывая, что связанная задача имеет строго возрастающую последовательность (потенциально многозначных чисел), тогда как здесь она в произвольном порядке.
AdmBorkBork
3
Привет Джош! Поскольку никто еще не упомянул об этом, я направлю вас в Песочницу, где вы сможете опубликовать будущие идеи и получить содержательные отзывы, прежде чем отправлять на главную. Это помогло бы сгладить любые детали (например, STDIN / STDOUT) и разрешить двойную дилемму до того, как вы получили здесь отрицательные отзывы.
AdmBorkBork
1
Жаль, что 9-x% 9 работает для любой цифры, кроме 0. Может быть, кто-нибудь умнее меня найдет способ заставить это работать.
Биджан,
2
Несколько ответов принимают целое число в качестве функции ввода. Это разрешено?
32043 можно поменять на более красивый номер. 99066 является симметричным по центру (не изменяется при повороте на 180 градусов вокруг центра) или, возможно, 97779 (палиндром, две различные цифры)
Sarge Borsch
1
Если ОП позволяет напечатать число дважды, 764**4можно сохранить два байта.
@KarlKastor, модуль 15 в базе 16 работает аналогично модулю 9 в базе 10. Модуль базы-1 является постоянным при получении суммы цифр, просто потому что 10 10 1 (мод базы-1). Сумма всех возможных цифр постоянна, поэтому отсутствующая цифра - это разница этой константы и входного числа (по модулю base-1).
Сумма всех цифр в Ascii составляет 525. Эта программа суммирует входные данные и вычитает их из 525, чтобы получить недостающую цифру.
((([]())[]{}){()()({}[()])}{} )
Нажмите 525. Это использует тот факт, что мы знаем, что для начала будет 9 элементов ввода. Это значит, что[] значение равно 9, что позволяет нам быстро получить большие числа, например 525.
Далее у нас есть немного:
[{{}}]
который будет суммировать входные данные и вычитать его из общей суммы.
Если вы переместитесь в negative(sum(input()))конец, вы можете злоупотребить ниладой высоты стека, чтобы толкнуть 525 легче. (([][][]()()()){()()({}[()])}{}[{{}}])должен сэкономить вам 10 байтов
Попробуйте онлайн! Использование: (477-).sum.map fromEnum $ "123456890". 477 - это сумма кодов символов цифр от 1 до 9, исключая 0. Эта анонимная функция вычисляет 477 минус сумма всех кодов символов цифр, чтобы найти недостающий.
Мне нравится способ, которым все языки игры в гольф (и даже некоторые языки, не относящиеся к игре в гольф) используют один и тот же алгоритм, но Jelly удается иметь самые короткие имена для встроенных в него встроенных функций и наименьший шаблон для обращения к аргументам ḟ.
1
@ ais523 APL - буква за буквой - то же самое (за исключением того, что это будет фрагмент APL, а не функция / программа): Ø= ⎕, D= D, ḟ= ~, как в ⎕D~'867953120'.
Адам
3
Я, пока пролистываю ответы: «Я предсказываю 3 символа в желе». Бинго. : ^ D
редактировать 1 байт, за исключением thx @Neil, с гораздо более умным трюком
Сохранение всех значений от 1 до 9 дает 1. Xor 1 еще раз, и результат равен 0. Итак, если какое-либо одно значение отсутствует, результатом будет отсутствующее значение.
Port of @ xnor's Python answer, за исключением того, что в JavaScript есть только оператор остатка, а не оператор по модулю, поэтому я не могу сделать это за один шаг. Редактировать: Сохранено 6 байтов благодаря @Arnauld.
Вы слишком сильно влюблены в reduce. +1 в любом случае
edc65
@Arnauld Я не вижу, когда это работает s[0]!='0', но уже есть ответ, который использует eval.
Нил
Не могли бы вы сделать s=>(15-`0x${s}`%15)%15?
Arnauld
@Arnauld Bah, и я уже сделал это для Batch-порта тоже ...
Нил
6
Brainfuck, 17 15 байт
-[-[->-<],]>++.
Попробуйте это здесь .
Это решение работает только со стандартным Brainfuck (8-битными ячейками), так как оно основано на переносе.
Это редкий день, когда Brainfuck на самом деле может конкурировать, но этот вызов как раз совпал со спецификацией BF очень хорошо!
Вместо того, чтобы прямо разбить этот ответ, я хотел бы пройтись по итерациям, которые я предпринял, потому что я думаю, что это было бы более понятно (и более интересно).
Примечание: это решение во многом основано на ответе Brain-Flak от Wheat Wizard .
объяснение
Шаг 1, 26 байт
В своем ответе Wheat Wizard указал, что сумма значений ASCII от 0-9 сумм до 525. А так как стандартный Brainfuck имеет только понятие [0,255], это делает значение 525% 256 = 13 . То есть вычитание значений ASCII входных данных из 13 позволяет получить недостающую цифру.
Первая версия этой программы была:
1. Поместите 13 в первую ячейку
2. Укажите входные данные во вторую ячейку
3. Вычтите вторую ячейку из первой ячейки
4. Перейдите к 2, если есть оставшиеся входные данные
5. Напечатайте первую ячейку
А вот код для простого решения:
+++++++++++++ #Set the first cell to 13
>, #Take inputs into the second cell
[[<->-],] #Subtract the second cell from the first cell and repeat until inputs are over
<. #Print the first cell
Шаг 2, 19 байт
Как указано в его ответе, так как мы знаем, что вход будет иметь длину ровно 9, мы можем использовать это значение как константу и исключить эту длинную строку + в самом начале.
Также не имеет значения, в какой момент мы добавляем 13 (спасибо, коммутативное свойство!), Поэтому мы смешаем это с шагами вычитания и печати.
, #Take input to enter the loop
[[->-<], #Subtract the first cell from the second cell
>+<] #Add 1 for each input; totaling 9
>++++ #Add the missing 4 to make 13
. #And print
Это был мой первоначальный ответ на эту проблему, но мы можем сделать лучше.
Шаг 3, 17 байт
Интересно, что предыдущий ответ работает, даже если мы начнем с + вместо
+[[->-<],>+<]>++++.
Брейнфук требовал чего-то в камере, чтобы начать цикл. Мы наивно добавили эту лишнюю 4 в конце, когда она могла бы пойти в других местах.
-[[->-<],>+<]>++.
С некоторыми полностью преднамеренными хитростями цикла (читай: методом проб и ошибок) запуск программы с - - приводит к двум интересным результатам:
Один добавляется во вторую ячейку (экономя 1 байт в конце).
Циклы запускаются одно дополнительное время, всего 10 вместо 9 (сохраняя еще 1 байт).
1 + 10 + 2 = 13, и в итоге мы получим оригинальный ответ.
Оглядываясь назад, это, вероятно, чрезмерное описание для такой простой программы Brainfuck.
Шаг 4, 15 байт
Подумав немного об этом решении, я смог отрезать 2 байта.
Я хотел кое-что прояснить относительно предыдущего шага:
минус для входа в цикл фактически добавляет 1, но на самом деле он вычитает 255 из второй ячейки (в результате 1).
В ретроспективе это очевидно, но вычитание 1 из первой ячейки аналогично добавлению 1 во вторую ячейку (потому что все в первой ячейке вычитается из второй ячейки).
-[-[->-<],]>++.
Мне удалось удалить «> + <», добавив «-» в начале первого цикла. Он должен идти туда, а не туда, где был «> + <», потому что в противном случае программа будет зацикливаться бесконечно.
Чистая функция, принимающая строку в качестве входных данных и возвращающая целое число. Mathematica имеет длинные имена команд и неохотно конвертирует между строками и целыми числами, что особенно плохо в этой задаче. Лучшее, что я смог найти, - это алгоритм из Ruby-ответа от Level River St , который выполняет вычисления на основе суммы ASCII-кодов входной строки; в Mathematica это использует только одно длинное имя команды.
Приятно, я не задумывался о комплектации. Альтернативные значения32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Jörg Hülsermann
5
Bash + coreutils, 19 байт
Я нашел более короткое решение для bash, в котором используется интересный подход к контрольной сумме:
Команда sumпечатает контрольную сумму и количество блоков. Я не знаю много деталей, но использую опцию-s (алгоритм System V) сделает контрольную сумму равной сумме ASCII каждого входного кода символа. Таким образом, контрольная сумма остается постоянной, когда изменяется порядок тех же вводимых символов.
В 867953120качестве тестового примера (последний пример), вот как работает скрипт:
sum -sвыходы 473 1. Если бы не было пропущено целое число, контрольная сумма была бы 525.
dc -e524?толкает 524 и затем трубу ввода. Стек: 1 473 524. Идея состоит в том, чтобы вычесть контрольную сумму из 525, но так как сумма выводит 1, мне нужно работать с ней.
--P, После применения двух вычитаний (524- (473-1)), стек: 52. С помощью 'P' я печатаю символ с этим кодом ASCII: 4пропущенная цифра.
function m(s)
character(len=10)::s,t
t='0123456789'
do j=1,10
k=0
do i=1,9
if(s(i:i)==t(j:j))k=1
end do
if(k==0)m=j-1
end do
end
Боюсь, не очень коротко.
Ungolfed:
integer function m(s)
implicit none
character(len=9)::s
character(len=10)::t
integer:: i, j, k
t='0123456789'
do j=1,10
k=0
do i=1,9
if (s(i:i) == t(j:j)) k=1
end do
if (k==0) m=j-1
end do
end function m
A, e# The range from 0 to 9: [0 1 2 3 4 5 6 7 8 9]
s e# Cast to a string: "0123456789"
q e# The input
- e# Remove all characters from the range that are in the input
e# Implicit output
xреализация старая и довольно глючная, поэтому вам нужно ẹ.
Fatalize
Вы можете привести аргумент, что что-то вроде этого ¬∋ℕдолжно работать только в 3-х символах - это то, что я попробовал первым - но есть несколько причин, почему это не так, и я не думаю, что есть какой-либо правдоподобный способ изменить Brachylog, чтобы это было.
Подобная ¬∋ℕработа невозможна даже в Прологе, если только вы не программируете то, что вы подразумеваете под этим not in. ¬в Brachylog эквивалентно \+в Prolog, и его значение означает «не доказуемо в предположении закрытого мира», а не «дают мне точки выбора для всего, что не проверяет это» (что почти всегда бесконечное число вещей )
Fatalize
Единственный способ сделать это в Прологе состоит в том, чтобы заранее «маркировать» их ℕ, но это будет означать изменение порядка оценки Брахилога , основанного на содержании предикатов. Это только одна из проблем, которые у него есть; Есть множество других.
3
Common Lisp, 47 байт
(lambda(s)(- 45(reduce'+ s :key'digit-char-p)))
Ungolfed:
(lambda (s) (- 45 (reduce '+ s :key 'digit-char-p)))
Explaination:
(reduce '+ s :key 'digit-char-p)
Это перебирает символы s, преобразует их в цифры и добавляет их. Digit-char-p для удобства возвращает номер символа как его «истинное» значение, чтобы его можно было использовать в качестве теста или преобразования.
(- 45 ...)
Вычитание из 45 возвращает цифру, которая отсутствовала на входе.
Создайте значение -525 в стеке, нажав 5, 2, объединить, нажать 5, объединить и отрицать.
Затем повторно получить вход и добавить, пока не будет достигнут конец ввода.
Удалите последний ввод, отмените (сделайте положительным) последний результат добавления, выведите символ и остановитесь.
Причиной работы от -525 и выше является то, что вывод символов выполняется для каждой входной итерации. Поскольку значение отрицательное, ничего не выводится до тех пор, пока цикл не выйдет и отрицательное значение не станет положительным.
Сумма значений ASCII варьируется от 477 до 468 в зависимости от того, какое число отсутствует. Вычитая это из 7, мы получаем диапазон от -470 до -461. Модифицируя это число на 10, мы получаем диапазон 0 - 9, который мы можем затем напечатать.
~+; ;# Sums the ASCII values of all characters to stdIn
~ # The # doesn't skip over the ~ because it's on the end of a line
~ Once EOF is hit, the ~ reverses the IP's direction
;# Jump the ; that was used before
--7 Subtract the sum from 7 (really just 0 - (sum - 7))
%a Mod it by 10
@. Print and exit
Причина, по которой я использую значения ASCII вместо целочисленного ввода, заключается в том, что &команда в Try it Online останавливает EOF (даже если она должна изменить IP-адрес). ~Работает правильно, хотя.
Сумма значений ASCII всех 10 цифр равна 525. Вычитая сумму данных цифр из 525, мы получаем значение ASCII отсутствующего символа.
#v~+ Sums the ASCII values of all characters on stdIn
Moves to the next line when this is done
>'i5* Pushes 525 (105 * 5)
-- Subtracts the sum from 525
@ , Prints and exits
Принимает входные данные $n, создает диапазон 0..9(т. Е. 0, 1, 2 ... 9), Затем использует Where-Objectпредложение ( |?{...}), чтобы извлечь число, которое выполняет регулярное выражение -notmatch. Это осталось на конвейере, вывод неявный.
Мне это нравится, потому что вы можете сказать это вслух. «ЖИСК», закричал он, взмахнув палочкой над цилиндром, и маленький белый кролик появился в клубе дыма ».
Ответы:
Python 2 ,
1816 байт+ красота благодаря @Sarge Borsch
Попробуйте онлайн!
99066**2
это просто более короткий способ создания строки, которая содержит 0 ~ 9источник
764**4
можно сохранить два байта.764**4
отсутствует5
,8
и9
763**4
=338920744561
Python , 22 байта
Попробуйте онлайн!
Арифметическое решение. Интерпретирует входную строку как шестнадцатеричную, отрицает ее и получает результат по модулю 15.
источник
APL (Дьялог) , 4 байта
Производная функция
⎕D
D igits∘
(связывает левый аргумент со следующей двоичной функцией для создания монадической функции)~
кроме [аргумент]Попробуйте онлайн!
Функциональный поезд
⎕D
D igits~
Кроме⊢
правильный аргументПопробуйте онлайн!
Явная программа
⎕D
D igits~
Кроме⍞
ввод символовПопробуйте онлайн!
источник
Brain-Flak ,
483836 + 3 = 39 байт10 байтов сохранено благодаря DJMcMayhem!
Попробуйте онлайн!
объяснение
Сумма всех цифр в Ascii составляет 525. Эта программа суммирует входные данные и вычитает их из 525, чтобы получить недостающую цифру.
Нажмите 525. Это использует тот факт, что мы знаем, что для начала будет 9 элементов ввода. Это значит, что
[]
значение равно 9, что позволяет нам быстро получить большие числа, например 525.Далее у нас есть немного:
который будет суммировать входные данные и вычитать его из общей суммы.
источник
negative(sum(input()))
конец, вы можете злоупотребить ниладой высоты стека, чтобы толкнуть 525 легче.(([][][]()()()){()()({}[()])}{}[{{}}])
должен сэкономить вам 10 байтовHaskell ,
2423 байтаПопробуйте онлайн! Использование:
(477-).sum.map fromEnum $ "123456890"
. 477 - это сумма кодов символов цифр от 1 до 9, исключая 0. Эта анонимная функция вычисляет 477 минус сумма всех кодов символов цифр, чтобы найти недостающий.Превращение цифр в целые на один байт длиннее:
Попробуйте онлайн!
источник
Желе , 3 байта
Просто фильтрует (
ḟ
) входную строку из «0123456789» (ØD
).Попробуйте онлайн!
источник
ḟ
.Ø
=⎕
,D
=D
,ḟ
=~
, как в⎕D~'867953120'
.Руби, 14
Суммирует коды ascii и вычитает из 48 * 9 + 45
Используйте как это
источник
JavaScript (ES6), 26
редактировать 1 байт, за исключением thx @Neil, с гораздо более умным трюком
Сохранение всех значений от 1 до 9 дает 1. Xor 1 еще раз, и результат равен 0. Итак, если какое-либо одно значение отсутствует, результатом будет отсутствующее значение.
Тест
источник
s=>eval([1,...s].join`^`)
сохраняет байт.Сетчатка ,
27 2119 байт-6 Благодаря Basic Sunset
-2 благодаря Мартину Эндеру
Попробуйте онлайн!
Замените каждую цифру таким количеством
_
s и 51
s:Удалить все
_
s и a1
для каждого:Подсчитайте количество
1
s осталось:источник
.
.^
5
^.
$*9¶
.
$*_
+`_¶_
¶
_
_
до1
сохранить байт.)05AB1E , 6 байтов
Попробуйте онлайн!
источник
JavaScript (ES6),
31292822 байтаPort of @ xnor's Python answer, за исключением того, что в JavaScript есть только оператор остатка, а не оператор по модулю, поэтому я не могу сделать это за один шаг. Редактировать: Сохранено 6 байтов благодаря @Arnauld.
источник
s=>[...s].map(c=>r-=c,r=45)|r
;-)reduce
. +1 в любом случаеs[0]!='0'
, но уже есть ответ, который используетeval
.s=>(15-`0x${s}`%15)%15
?Brainfuck,
1715 байтПопробуйте это здесь . Это решение работает только со стандартным Brainfuck (8-битными ячейками), так как оно основано на переносе.
Это редкий день, когда Brainfuck на самом деле может конкурировать, но этот вызов как раз совпал со спецификацией BF очень хорошо!
Вместо того, чтобы прямо разбить этот ответ, я хотел бы пройтись по итерациям, которые я предпринял, потому что я думаю, что это было бы более понятно (и более интересно).
Примечание: это решение во многом основано на ответе Brain-Flak от Wheat Wizard .
объяснение
Шаг 1, 26 байт
В своем ответе Wheat Wizard указал, что сумма значений ASCII от 0-9 сумм до 525. А так как стандартный Brainfuck имеет только понятие [0,255], это делает значение 525% 256 = 13 . То есть вычитание значений ASCII входных данных из 13 позволяет получить недостающую цифру.
Первая версия этой программы была:
1. Поместите 13 в первую ячейку
2. Укажите входные данные во вторую ячейку
3. Вычтите вторую ячейку из первой ячейки
4. Перейдите к 2, если есть оставшиеся входные данные
5. Напечатайте первую ячейку
А вот код для простого решения:
Шаг 2, 19 байт
Как указано в его ответе, так как мы знаем, что вход будет иметь длину ровно 9, мы можем использовать это значение как константу и исключить эту длинную строку + в самом начале.
Также не имеет значения, в какой момент мы добавляем 13 (спасибо, коммутативное свойство!), Поэтому мы смешаем это с шагами вычитания и печати.
Это был мой первоначальный ответ на эту проблему, но мы можем сделать лучше.
Шаг 3, 17 байт
Интересно, что предыдущий ответ работает, даже если мы начнем с + вместо
Брейнфук требовал чего-то в камере, чтобы начать цикл. Мы наивно добавили эту лишнюю 4 в конце, когда она могла бы пойти в других местах.
С некоторыми полностью преднамеренными хитростями цикла (читай: методом проб и ошибок) запуск программы с - - приводит к двум интересным результатам:
1 + 10 + 2 = 13, и в итоге мы получим оригинальный ответ.
Оглядываясь назад, это, вероятно, чрезмерное описание для такой простой программы Brainfuck.
Шаг 4, 15 байт
Подумав немного об этом решении, я смог отрезать 2 байта.
Я хотел кое-что прояснить относительно предыдущего шага:
минус для входа в цикл фактически добавляет 1, но на самом деле он вычитает 255 из второй ячейки (в результате 1).
В ретроспективе это очевидно, но вычитание 1 из первой ячейки аналогично добавлению 1 во вторую ячейку (потому что все в первой ячейке вычитается из второй ячейки).
Мне удалось удалить «> + <», добавив «-» в начале первого цикла. Он должен идти туда, а не туда, где был «> + <», потому что в противном случае программа будет зацикливаться бесконечно.
источник
Октава , 22 байта
Попробуйте онлайн!
источник
Mathematica, 25 байтов
Чистая функция, принимающая строку в качестве входных данных и возвращающая целое число. Mathematica имеет длинные имена команд и неохотно конвертирует между строками и целыми числами, что особенно плохо в этой задаче. Лучшее, что я смог найти, - это алгоритм из Ruby-ответа от Level River St , который выполняет вычисления на основе суммы ASCII-кодов входной строки; в Mathematica это использует только одно длинное имя команды.
источник
PHP, 27
использует трюк из ответа Рода, чтобы сгенерировать строку, содержащую все цифры, а затем удаляет все цифры, кроме пропущенной.
PHP, 41
Этот использует XOR, потому что я еще не видел его.
источник
32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Bash + coreutils, 19 байт
Я нашел более
короткоерешение для bash, в котором используется интересный подход к контрольной сумме:Попробуйте онлайн!
Объяснение:
Команда
sum
печатает контрольную сумму и количество блоков. Я не знаю много деталей, но использую опцию-s
(алгоритм System V) сделает контрольную сумму равной сумме ASCII каждого входного кода символа. Таким образом, контрольная сумма остается постоянной, когда изменяется порядок тех же вводимых символов.В
867953120
качестве тестового примера (последний пример), вот как работает скрипт:sum -s
выходы473 1
. Если бы не было пропущено целое число, контрольная сумма была бы 525.dc -e524?
толкает 524 и затем трубу ввода. Стек:1 473 524
. Идея состоит в том, чтобы вычесть контрольную сумму из 525, но так как сумма выводит 1, мне нужно работать с ней.--P
, После применения двух вычитаний (524- (473-1)), стек:52
. С помощью 'P' я печатаю символ с этим кодом ASCII:4
пропущенная цифра.источник
Фортран 95,
146128 байтБоюсь, не очень коротко.
Ungolfed:
источник
CJam , 5 байтов
Попробуйте онлайн!
источник
GNU sed , 36 байт
Включает +1 для
-r
Попробуйте онлайн!
источник
Брахилог (2), 5 байт
Попробуйте онлайн!
Возможно, должно быть короче (я все еще не понимаю, почему
ẹ
это необходимо), но это лучшее, что я мог сделать.объяснение
источник
x
реализация старая и довольно глючная, поэтому вам нужноẹ
.¬∋ℕ
должно работать только в 3-х символах - это то, что я попробовал первым - но есть несколько причин, почему это не так, и я не думаю, что есть какой-либо правдоподобный способ изменить Brachylog, чтобы это было.¬∋ℕ
работа невозможна даже в Прологе, если только вы не программируете то, что вы подразумеваете под этимnot in
.¬
в Brachylog эквивалентно\+
в Prolog, и его значение означает «не доказуемо в предположении закрытого мира», а не «дают мне точки выбора для всего, что не проверяет это» (что почти всегда бесконечное число вещей )ℕ
, но это будет означать изменение порядка оценки Брахилога , основанного на содержании предикатов. Это только одна из проблем, которые у него есть; Есть множество других.Common Lisp, 47 байт
Ungolfed:
Explaination:
Это перебирает символы
s
, преобразует их в цифры и добавляет их. Digit-char-p для удобства возвращает номер символа как его «истинное» значение, чтобы его можно было использовать в качестве теста или преобразования.Вычитание из 45 возвращает цифру, которая отсутствовала на входе.
источник
Cubix , 18 байт
расширенный
Попробуй здесь
Использует тот же метод, что и мозг ответ.
Создайте значение -525 в стеке, нажав 5, 2, объединить, нажать 5, объединить и отрицать.
Затем повторно получить вход и добавить, пока не будет достигнут конец ввода.
Удалите последний ввод, отмените (сделайте положительным) последний результат добавления, выведите символ и остановитесь.
Причиной работы от -525 и выше является то, что вывод символов выполняется для каждой входной итерации. Поскольку значение отрицательное, ничего не выводится до тех пор, пока цикл не выйдет и отрицательное значение не станет положительным.
источник
PHP, 37 байт
источник
Баш (+ коммунальные услуги),
2219 байтовseq
вместо расширения скобки -3 байта (Thx @Riley!)Тест
Попробуйте онлайн!
источник
$1
это было бы более очевидно ...seq
вместоecho
:seq 0 9|tr -d \\n$1
Google Sheets,
3933 байтаКод:
Сохранено 6 байтов благодаря Стиву Кассу.
Предыдущий код:
Результат:
источник
=REGEXEXTRACT(0&49^9,"[^"&A1&"]")
также является допустимым решением, учитывая аналогичную логику. Обновленный ответ.Befunge 98,
1412 байтЯ сэкономил 1 байт, переместив программу на 1 строку и 1 байт, выполнив более точную математику
Попробуйте онлайн!
объяснение
Сумма значений ASCII варьируется от 477 до 468 в зависимости от того, какое число отсутствует. Вычитая это из 7, мы получаем диапазон от -470 до -461. Модифицируя это число на 10, мы получаем диапазон 0 - 9, который мы можем затем напечатать.
Причина, по которой я использую значения ASCII вместо целочисленного ввода, заключается в том, что
&
команда в Try it Online останавливает EOF (даже если она должна изменить IP-адрес).~
Работает правильно, хотя.Старая программа , 14 байт
Сумма значений ASCII всех 10 цифр равна 525. Вычитая сумму данных цифр из 525, мы получаем значение ASCII отсутствующего символа.
источник
PowerShell , 30 байт
Попробуйте онлайн!
Принимает входные данные
$n
, создает диапазон0..9
(т. Е.0, 1, 2 ... 9
), Затем используетWhere-Object
предложение (|?{...}
), чтобы извлечь число, которое выполняет регулярное выражение-notmatch
. Это осталось на конвейере, вывод неявный.источник
Рёда , 28 байт
Попробуйте онлайн!
источник
Pyth, 5 байт
попытайся!
объяснение
"-jUT" также работает, но выдает новые строки для каждого типа int.
источник
05AB1E , 5 байтов
Попробуйте онлайн!
объяснение
источник