Рассмотрим бесконечную строку всех неотрицательных десятичных целых чисел, соединенных вместе по порядку (сродни константе Чампернау ):
0123456789101112131415161718192021222324252627282930...979899100101102103...
Напишите программу или функцию, которая принимает неотрицательное целое число, которое индексирует (на основе 0) в этой бесконечной строке. Выведите истинное значение, если индексированная цифра 0, в противном случае выведите ложное значение, если цифра 1-9.
Самый короткий код в байтах побеждает.
Первые 25 правдоподобных материалов:
0
11
31
51
71
91
111
131
151
171
191
192
194
197
200
203
206
209
212
215
218
222
252
282
312
Престижность, если ваша программа эффективно использует память, но это не является обязательным требованием.
code-golf
string
integer
decision-problem
Кальвин Хобби
источник
источник
Ответы:
Haskell, 25 байт
Пример использования:
(<'1').((show=<<[0..])!!) 312
->True
источник
05AB1E , 5 байтов
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн!
источник
Mathematica,
4240 байтАнонимная функция. Принимает число в качестве входных данных и возвращает либо
True
или вFalse
качестве выходного сигнала. Более длинное, но более эффективное (?) Решение:источник
CJam, 9 байт
Это безымянный блок (функция), который принимает целое число и возвращает 0 или 1 соответственно.
Объяснение:
Онлайн переводчик . Обратите внимание, что
~
оценивает блок. В качестве альтернативы вы можете запустить этот набор тестов, который использует,
для фильтрации первых 1000 чисел истинные значения.источник
MATL, 11 байт
Попробуйте онлайн!
Пояснение :
источник
Брахилог ,
108 байт2 байта благодаря Fatalize.
Попробуйте онлайн!
источник
@e
Векторизация такy@ec:?m0
работает, чтобы сохранить 2 байта.#0
,#1
,#+
,#_
,#>
и#<
векторизовать как@e
делает. Некоторые из предикатов, которые векторизуются, например , рекурсивно+
или*
не векторизуются до самого низкого уровня списка, и не выполняют одно и то же в зависимости от структуры входных данных.Perl 6 ,
2625 байтЛямбда, которая принимает число в качестве входных данных и возвращает
True
илиFalse
.Память эффективная.
Как это работает
0..*
- Построить диапазон от 0 до бесконечности.map(|*.comb, )
- Лениво итерируйте диапазон, заменяя каждое число символами его строкового представления и возвращая новую ленивую последовательность.|
Сохраняет новую последовательность выравнивают.[$_]
- Взять элемент по индексу, определенному (неявно объявленным) лямбда-параметром$_
.+
- Приведите это к числу. (Этот шаг необходим, потому что принудительное приведение строки к логическому значению всегда дает True, если строка не пуста.)!
- Привести его к логическому значению и отрицать.( попробуйте онлайн )
РЕДАКТИРОВАТЬ: -1 байт благодаря b2gills.
источник
{!+map(|*.comb,0..*)[$_]}
я придумал,{!+({|($++).comb}...*)[$_]}
прежде чем посмотреть, был ли уже ответ P6.!+
может быть заменен1>
Желе , 6 байт
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это работает
источник
Python 3.5, 40 байт
Проверьте это на repl.it .
Как это работает
Для ввода п ,
'%d'*-~n
повторяет формат строки N + 1 раз.(*range(n),n)
распаковывает диапазон [0, ..., n - 1] и выдает кортеж (0, ..., n) ....%...
заменяет каждое вхождение % d на соответствующее целое число в диапазоне, приводя к строке 01234567891011 ... n .(...)[n]<'1'
выбирает символ с индексом n и проверяет, меньше ли он символа 1 .источник
Python 3, 44 байта
Анонимная функция, которая принимает входные данные через аргумент и возвращает
True
илиFalse
при необходимости.Как это работает
Попробуйте это на Ideone
источник
Pyth,
87 байтовСпасибо @LeakyNun за -1 байт
Это моя первая попытка игры в гольф в Pyth.
Полная программа, которая печатает
True
илиFalse
при необходимости.Попробуйте онлайн
Первые 25 правдивых входов
Как это работает
источник
SILOS , 141 байт
Попробуйте онлайн!
Использует только 5 целых чисел, максимальная эффективность памяти \ o /
объяснение
Мы генерируем столько цифр, сколько вводится в константу Champernowne.
В основном цикле мы делаем следующее:
100
ы цифра1234
получается ,(1234/10)%10
где/
это разделение пола.источник
JavaScript (ES6), 45 байт + слава
Моя лучшая версия без Kudos была 34 байта:
источник
JavaScript (ES6), 47 байт
n=>[...Array(n+1)].reduce((a,_,i)=>a+i,'')[n]<1
источник
Javascript (ES6),
4233 байтаПример:
источник
Groovy, 56 байт
Ничего особенного, но я пробую что-то новое.
источник
Perl, 24 байта
Включает +1 для
-p
Запустить с вводом на STDIN:
выведите 1 для нуля, иначе ничего
zero.pl
источник
PHP, 36 байт
Вывести,
1
если десятичное число аргумента Champernowne равно0
, иначе print '' (пустая строка).источник
Рубин,
3523 байтаЭто анонимная функция, которая объединяет
[0..n]
, беретn
индекс th и проверяет, является ли этот символ"0"
(меньше"1"
). Предложения по игре в гольф приветствуются.Ungolfing
источник
На самом деле,
98 байтЭтот ответ объединяет диапазон
[0..n]
, беретn
индекс th и проверяет, есть ли этот символ"0"
. Предложения по игре в гольф приветствуются. Попробуйте онлайн!Ungolfing
источник
Баш,
3128 байтВывод не пустой (правдивый) или пустой (ложный). Проверьте это на Ideone .
источник
Юлия,
2120 байтСпасибо @LuisMendo за отыгрывание 1 байта!
Попробуйте онлайн!
источник
R
61 61байтСпасибо @plannapus за 4 байта.
Создает вектор чисел 0: n (для индексации 0), создает их строку, извлекает n-е значение из строки (с учетом индексации 0). Преобразует в числовые и проверяет, если это 0.
источник
GolfScript, 12 байт
Объяснение:
Попробуйте онлайн или проверьте все контрольные примеры!
источник
C 154 байта
функция, которая вычисляет значение, является f (n, 0,0,0), где n - входной индекс. это может вычислить от изменения индекса "return! c" в "return c" значение массива в этом индексе ... я не понимаю, как, но это, кажется, работает хорошо ....
источник
Javascript (ES5):
6160 байтUngolfed:
Старый:
Старый бездельник:
источник
!s[n]
вместоs[n]==0
?function(n){s="";while(s.length<n)s+=s.length;return !s[n]}
) возвращает a (31) = false.CoffeeScript, 56 байт
источник
зш, 31 байт
exit 0
верно в зшисточник
C #, 71 байт
И я подумал, что сначала он был коротким, но потом мне пришлось добавить,
n+=11
чтобы он не выбрасывал,System.IndexOutOfRangeException
когда были введены числа ниже 11источник
Пайк, 7 байт
Попробуй это здесь!
источник