Последовательность Ван дер Корпута является одним из простейших примеров последовательности с низким расхождением . Его n
четвертый термин справедлив 0.(n written in base 10 and mirrored)
, поэтому его первые термины:
0.1
, 0.2
, 0.3
, 0.4
, 0.5
, 0.6
, 0.7
, 0.8
, 0.9
,
0.01
, 0.11
, 0.21
, 0.31
, 0.41
, 0.51
, 0.61
, 0.71
, 0.81
, 0.91
,
0.02
, 0.12
, 0.22
, 0.32
, 0.42
, 0.52
, 0.62
, 0.72
, 0.82
, 0.92
, ...
Соревнование
Напишите программу или функцию на любом языке программирования, которая принимает в качестве входных данных положительное целое число n
меньше, чем 10^6
и возвращает или печатает первые n
члены последовательности Ван-дер-Корпута. Выходной формат может быть списком чисел с плавающей запятой, списком строк формы 0.digits
или уникальной строкой, в которой термины разделены запятыми и / или пробелами, символами новой строки.
Стандартные лазейки запрещены. Самый короткий исходный код выигрывает.
Oracle SQL 11.2,
646258 байтСтарая версия
Конкатенация '' к числу приводит к его преобразованию в строку. Это на 2 байта короче, чем при использовании TRIM (), что короче, чем TO_CHAR ().
Поскольку конкатенация строки с NUMBER приводит к строке, можно использовать эту строку для управления «0». часть результата.
источник
CJam,
1411 байтовСпасибо Sp3000 за сохранение 3 байта.
Проверьте это здесь.
объяснение
источник
Perl 6,
242220 байтСпасибо Алекс-Даниил Якименко-А. для еще двух байтов
старая версия
РЕДАКТИРОВАТЬ: Спасибо raiph за дополнительные 2 байта
использование
источник
{("0."~.flip for ^$_)}
сохраняет 2 байтаMathematica, 40 байт
Прецедент
источник
Pyth, 8 байт
Попробуйте онлайн.
Это действительно просто сочетание этого и этого ответа. Поэтому я делаю это вики-сообществом.
источник
Pyth, 11 байт
Попробуй это здесь!
объяснение
источник
Pyth - 10 байт
Попробуйте это онлайн здесь .
источник
VSQ...
JavaScript (ES6), 58
Анонимная функция, возвращающая строку со значениями, разделенными запятыми
ТЕСТ
источник
MATL , 10 байт
Попробуйте онлайн!
источник
Haskell,
36, 27 байтДва байта, сохраненные Ними, и дополнительные 7 Линн.
источник
f n=reverse.show<$>[1.0..n]
Брахилог , 23 байта
Он принимает число в качестве ввода и выводит результат в STDOUT, разделенный пробелами.
Довольно просто. К сожалению, мы должны объединить число с пустой строкой, чтобы преобразовать это число в строку (
:""rc
), потому что встроенного предиката преобразования пока нет.Преобразование в строку необходимо, потому что если мы перевернем цифры числа, то ведущие нули (например,
10
станут01
) будут потеряны.источник
PowerShell, 52 байта
Чуть дольше, чем хотелось бы, но использует пару изящных трюков.
while
Петля очевидна, но условная немного сложнее - у нас$a
(который начинается ,$null
когда первая ссылка) , а затем вычесть наш номер входа$args[0]
. В PowerShell математические операции$null
обрабатывают его как ноль, поэтому для ввода,20
например, это приведет к-20
. Так как любое ненулевое число равно$true
, условный цикл будет$true
прав до тех пор, пока не будет$a
равен нашему входному числу (в этот момент вычитание будет равно0
или$false
). Хитрость происходит от постинкремента++
, который не будет выполняться до тех пор , после вычитания вычисляется, поэтому обработка ввода1
правильно вывода ,0.1
а затем остановить петлю на следующей итерации.Каждый раз в цикле мы просто создаем строковый литерал, который остается в конвейере и выводится соответствующим образом. Мы строим это из
"0."
конкатенации с результатом унарного-join
оператора, который воздействовал на массив символов, созданный из взятия строки"$a"
назад (путем индексации через диапазон"$a".length..0
).Тестовые прогоны
источник
Баш, 36 байт
Принимает число в качестве аргумента командной строки и выводит каждый член в отдельной строке. Например:
источник
seq -f%g.0 $1|rev
.seq
может сделать форматированный вывод.Japt, 12 байт
Проверьте это онлайн!
Как это работает
источник
пчелиный воск ,
5753 байтаРаботая над проблемой вывода двоичных цифр для розеттакода, я заметил, что я мог бы использовать тот же алгоритм короткого деления для последовательности Ван-дер-Корпута, просто используя деление и модуль по 10 вместо 2. Вывод инвертирован в обоих случаях.
Гольф на 4 байта путем зеркального отражения кода:
Гексагональная печать, для более легкой ориентации:
Объяснение одного цикла через программу, используя оригинальный код:
Пример:
источник
R, 59 байт
объяснение
example(strsplit)
создает функциюstrReverse
(тогда это должно быть очевидно)Используя
IRanges::reverse
, это может быть гольф до 47 байтисточник
Python 3, 47 байт
более короткое решение с Python 2
Прецедент
источник
f=
это не обязательно, поэтому его длина составляет 47 байт.n-1
термины.lambda n:['0.'+`i+1`[::-1]for i in range(n)]
короче, если вы используете Python 2. Кроме того, вы не должны говорить «Python 3.5», если для него не требуется 3.5, а это не так. Эта версия требует Python 2.𝔼𝕊𝕄𝕚𝕟, 12 символов / 15 байтов
Try it here (Firefox only).
Все нормально.
объяснение
⩤⁽1ï⒨
создает диапазон[1,ï]
для отображения,ß)
преобразует mapitem (число) в строку,Ė⍞.0
завершает.0
до конца иᴙ
переворачивает всю строку.источник
Python 2, 54 байта
Объяснение:
Итерация по набору
[1,input)
и добавление обратногоi
к.
.Еще можно играть в гольф больше.
источник
`i`
вместоstr(i)
. Кроме того, я думаю, что вам нужно напечатать ведущий ноль.PHP,
4541 байтПринимает входной аргумент из CLI. Запустите так:
источник
Сетчатка, 39 байт
Принимает участие в одинарных.
Попробуйте это онлайн здесь.
источник
Гема, 45 знаков
Образец прогона:
источник
Юлия ,
50383331 байтЯ выбрал другой формат вывода, чтобы сократить код на 12 байт. Функция теперь возвращает массив строк. Сокращено еще на 5 байтов. Спасибо Алексу А. за напоминание о интерполяции строк и использовании анонимной функции (избавление от еще 2 байтов).
или в качестве альтернативы
Тест
источник
n->["0."reverse("$i")for i=1:n]
map(n->["0."reverse("$i")for i=1:n],3)
(для n = 3), не будет необходима для получения какого-либо вывода? Это сделало бы это (по крайней мере) так долго, как мое решение.Python 2, 40 байт
Пример:
Алгебраическое решение:
источник
JQ 1,5,
4035 символов(34 символа кода + 1 символ опции командной строки.)
Образец прогона:
Он-лайн тест (прохождение
-r
через URL не поддерживается - проверьте Raw Output самостоятельно.)То же самое со ссылками на документацию:
В качестве более удобочитаемой альтернативы вышеприведенное также может быть написано так ( в режиме онлайн ):
источник
"\(.+1).0"/""
работает?\(…)
и деление/
, которое в случае строк разделяется.BBC BASIC,
898887 байтИспользуются аббревиатуры, чтобы максимально сократить вещи. Совместим с Brandy Basic и BASIC 2 на оригинальной машине.
Для современных BBC BASIC вы также можете не указывать номера строк, чтобы сохранить еще два байта.
источник
Дьялог АПЛ , 12 байт
Попробуйте онлайн!
Прямое:
{
строка функции'0.'
перед,
обратным⌽
представлением строки⍕
аргумента⍵
функции}
для каждого¨
из чисел от 1 до n⍳
.источник
JS, 66
Выход - это массив с именем "o"
источник
Groovy, 36 символов
Образец прогона:
источник