ЗАДАЧА
выведите целые числа n, где 12 <= n <= 123456789
и все пары последовательных цифр в n имеют одинаковую положительную разницу между ними (например, 2468, но не 2469).
НЕТ ВВОДА.
Выход:
12
13
14
15
16
17
18
19
23
24
25
26
27
28
29
34
35
36
37
38
39
45
46
47
48
49
56
57
58
59
67
68
69
78
79
89
123
135
147
159
234
246
258
345
357
369
456
468
567
579
678
789
1234
1357
2345
2468
3456
3579
4567
5678
6789
12345
13579
23456
34567
45678
56789
123456
234567
345678
456789
1234567
2345678
3456789
12345678
23456789
123456789
правила
- Применяются стандартные лазейки.
- нет ввода
самый короткий код выигрывает.
Кредиты анархии гольф
Ответы:
Желе ,
1211 байтПопробуйте онлайн!
Как это устроено
источник
ìà Find fastest route between two points using Dykstra's Algorithm
Python 2 , 81 байт
Попробуйте онлайн!
Мое решение от анархии гольф. Идея состоит в том, чтобы перебрать все возможные тройки длины, начального значения и шага, что дает отсортированные результаты. Тройной кодируется в виде значения
r
от72
до647
, и компоненты извлекаются какk/72
,k/8%9
иk%8
. Старт сk
достаточно высокого уровня позволяет избежать вывода однозначных чисел.xsot сэкономил два байта , заменив
range
их жестко закодированной строкой цифр'123456789'
.Это было написано с ограничением в две секунды. Более медленная стратегия, которая фильтрует числа, а не генерирует их, может быть короче.
источник
1
к123456789
, вместо того, чтобы заставлять ответы придумывать какой-то умный способ генерировать правильные числа в правильном (отсортированном) порядке.C
166152 байта6 байтов сохранено благодаря @KevinCruijssen!
8 байтов сохранено благодаря @JonathanFrech!
Попробуйте онлайн
Полностью отформатированную версию приведенного выше кода можно увидеть ниже.
источник
while(i<123456789)
бытьwhile(i<=123456789)
вместо этого в соответствии с диапазоном испытаний? Кроме того, вы можетеp,l,d,i=11;main(){for(char s[10];i<=123456789;){sprintf(s,"%d",++i);p=0;for(l=strlen(s);--l>0;){d=s[l]-s[l-1];if(p<1)p=d;if(p^d|d<1)break;p=d;}if(l<1)puts(s);}}
i<1e9
,l<1
можно играть в гольф!l
, так какl
никогда не достигает отрицательного значения.i<1e9
. И!l
когдаl
это всегда>=0
звучит разумно для догадки CI (я сам никогда не программировал на C).Желе ,
14, 13 байтПопробуйте онлайн!
Один байт сохранен благодаря @MrXcoder!
Это крайне неэффективно, поэтому время ожидания на TIO истекает, но если оно когда-либо завершится, оно выдаст правильный вывод. Вы можете попробовать это с меньшими числами здесь: Попробуйте это онлайн!
Объяснение:
источник
$
ссылка в конце вашей вспомогательной ссылки.DIµ>0ȦȧE¶Ç77#
05AB1E , 23 байта
Попробуйте онлайн!
Замените
•7=›ζ•
на 7000, чтобы закончить его на TIO, или просто нажмите кнопку «Завершить» до истечения времени ожидания, в результате чего цифры будут напечатаны до этой точки.источник
žh
'0123456789'
,1357
например, также допустимое число, которое нужно вывести.•7=›ζ•
Mathematica, 79 байтов
Попробуйте онлайн! с меньшим числом, потому что это очень медленно
вот еще один подход, который строит все числа в 1сек
Mathematica, 123 байта
Попробуйте онлайн! все числа в секунду
источник
Шелуха ,
1413 байтПечатает разделенные новой строкой числа в STDOUT. Попробуйте онлайн!
-1 байт благодаря вдохновению от H.PWiz.
объяснение
источник
Wolfram Language (Mathematica) , 76 байт
Попробуйте онлайн!
источник
APL (Dyalog) ,
3728 байтовПопробуйте онлайн!(с более коротким диапазоном из-за тайм-аута)
Как?
x←11+⍳123456789
-11, 12... 1e9
вx
¨
- для каждого⍎¨⍕⍵
- разбить на цифры2-/
- получить список различий∪
- получить уникальные элементы1=≢
- длина == 1?x/⍨
- используйте это как маску для созданного диапазона⍪
- и колонизироватьисточник
Шелуха , 14 байт
Попробуйте онлайн!
источник
≠
. : PI забыл, что это работает и для персонажейПартия,
210200 байтовБез оптимизации, так что очень медленный - занимает около 25 секунд до 12345, поэтому для полного вывода вам придется подождать около 3 дней.
источник
Java 8,
169168145 байтПорт @Jacobinski C ответа (после того, как я немного играл в гольф).
-23 байта благодаря @Nevay .
Объяснение:
Попробуй это здесь. (В конце он слишком медленный, поэтому не печатает окончательное число на TIO. Однако, оно печатает окончательное число локально через 20 секунд.)
источник
v->{byte[]a;for(int i=9,p,l;++i<1e9;System.out.print(l<1?i+"\n":""))for(a=(i+"").getBytes(),p=0,l=a.length;--l>0&&p*(p^(p=a[l]-a[l-1]))<1&p>0;);}
break
как-то отбросить и добавить в проверку цикла, но с этим я бы не справился сам. ;) Благодарность!05AB1E , 14 байтов
Попробуйте онлайн!
источник
12žhŸʒS¥D0›PsË&
, что я не мог заставить его работать локально. Вы можете заставить это фактически выполнить?Ÿ
, это будет нормальноPython 2 ,
1039795 байт-2 байта благодаря @JonathanFrech
Попробуйте онлайн!
источник
`n`[1:]
.Python 2 ,
7675 байтЗанимает около 3 минут на месте.
Попробуйте онлайн! (изменено для печати всех номеров, кроме последнего)
источник
JavaScript (Firefox 30-57), 105 байт
Циклы по длинам от 2 до 10 (x - это индекс последнего символа и, следовательно, на 1 меньше длины), начиная с цифр от 1 до 9 и от 1 до 9, затем фильтры по конечной цифре меньше 10, и если поэтому генерирует результат, отфильтровывая цифры из строки цифр.
источник
Uncaught SyntaxError: Unexpected token for
Pyth , 21 байт
Порт умного подхода Денниса .
Попробуй это здесь!
Pyth , 23 байта
Это время ожидания на онлайн переводчике, но работает, если достаточно времени и памяти.
Попробуйте онлайн с меньшим номером .
источник
MATL ,
1716 байтПопробуйте онлайн! с
1e9
заменой на1e3
так, чтобы он не истекал в онлайн-компиляторе.источник
JavaScript (ES6), 121 байт
Не такой короткий, как ответ Нейла , но я подумал, что это все же стоит опубликовать.
Работает, создавая набор параметров, в
'123456789'
котором все несоответствующие записи обрезаются и имеют префикс0
, сортируя результаты в числовом порядке и сохраняя только 77 релевантных.демонстрация
Показать фрагмент кода
источник
C (gcc) , 106 байт
Попробуйте онлайн!
Негольфированная (преттифицированная) версия:
источник
JavaScript (ES6),
109104 байтаРаботает путем генерации всех возможных чисел: циклически повторяет каждое приращение от 8 до 1 (переменная
i
), циклически перебирает каждую начальную цифру от 8 до 1 (переменнаяj
), циклически перебирает каждую цифру междуj
и10-i
(переменнаяk
) и генерирует строкуt
путем добавленияk
к текущемуt
, На каждом шагеt
добавляется выходной массив.Попробуйте онлайн!
источник
Wolfram Language (Mathematica) , 71 байт
Попробуйте онлайн!
Молниеносно из-за создания, а не выбора выхода.
источник
Java (OpenJDK 8) ,
228174170163 байтаПопробуйте онлайн!
источник
JavaScript (ES6), 145 байт
Прямой подход с небольшим количеством магии.
Запуск сниппета будет занимать много памяти ...
источник
PHP,
8584 байтапопробуйте это онлайн .
сортировка стоит 17 байт. Эта версия печатает результаты, упорядоченные по-другому:
источник