Если задано неотрицательное целое число n, перечислите все палиндромные числа (в десятичной форме) в диапазоне от 0 до n (включительно в диапазоне). Палиндромное число остается тем же самым, когда его цифры обращены.
Первые палиндромные числа (в базе 10) приведены здесь :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, ...
Это кодовый гольф с призом, собираемым наименьшим количеством персонажей. Палиндромные числа должны выводиться по одному на строку в стандартный вывод. Программа должна читать из командной строки или стандартного ввода.
n
частью диапазона для включения?Ответы:
Golfscript, 15 символов
источник
Perl 5.10, 29 (или 39) символов
Нужна
say
функция включена. 29 символов, если вы считаете, что это бесплатно, в противном случае 39 добавитьuse 5.010;
. Аргумент на STDIN.Perl, 35 символов
используя старое соглашение perlgolf,
#!perl
которое не учитывается, но следуют все флаги, следующие за ним.Perl, 36 символов
Если ни один из других не подходит.
источник
$/
- это разделитель входных записей, по умолчанию используется перевод строки. Это просто немного короче, чем буквально"\n"
.map{say if$_==reverse}0..<>
-E
вместо-e
, вы получитеsay
бесплатно.Befunge
320313303 персонажа(включая значительные новые строки и пробелы)
Интересно, смогу ли я сделать это меньше, перенаправив пути ...
Редактировать: переделать верхнюю часть, чтобы избежать лишней строки.
источник
Perl 5.10 - 27 символов
map{say if$_==reverse}0..<>
Читает аргумент из стандартного ввода.
источник
Ruby 1.9, 39 символов
Ввод (не должен заканчиваться символом новой строки) через stdin. Пример вызова:
40 символов для версии, которая использует аргументы командной строки:
источник
p
вместоputs
.irb(main):023:0> p (?0..gets).select{|i|i==i.reverse} 1 ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88", " 99"] => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "11", "22", "33", "44", "55", "66", "77", "88" , "99"]
Код ниже работает для меня.p ('0'..gets[0..-2]).select{|i|i==i.reverse}
Не могли бы вы объяснить свой код.p
иputs
не эквивалентны, фактически используяp
разрывы вывода, так как помещает записывает каждый элемент в новую строку, еслиp
вызывается с массивом , тогда как просто вызывает.to_s
.J , 20 знаков
источник
,"0
.,.
работаетPython,
5751 символИспользование:
источник
for i in range(input()):if`i`==`i`[::-1]:print i
print
и просто делатьif`i`==`i`[::-1]:i
(я говорю это, потому что от этого зависит решение Scala).Perl> 5.10: 25 символов
источник
APL (
2517)источник
Javascript
122108107 символов ...Я уверен, что это может быть в гольфе больше - я новичок в этом!
или же
источник
var
они не нужны, вы можете просто сделать вещи глобальными. Такжеprompt()
не нуждается строго в параметрах.prompt()
чтобы сохранить одну точку с запятой:n=prompt(o=[]);
.var i=0
что может бытьvar
удалено в вашемfor
.i++<n
сравниваетсяi<n
перед добавлением 1 кi
. Таким образом, он работает вплоть доi=n
. Если вы хотите остановиться наi=n-1
, вы бы использовали++i<n
вместо этого.alert(o.join(" "))
должен быть вalert(o.join("\n"))
соответствии со спецификациями. Добавьте 1 к вашему количеству персонажей, когда исправите это.Perl - 43 символа
Это моя первая попытка игры в гольф кода, так что я уверен, что профессионал Perl может сыграть в гольф.
источник
Haskell 66 символов
источник
PHP
6458Изменено $ _GET ['n'] на $ argv [1] для ввода в командной строке.
источник
Скала 59
источник
readInt
на конкретный номер онлайн.PHP,
595553 символовиспользование
Редактировать: спасибо Томас
источник
echo "$i\n"
чтобы получитьecho"$i\n"
. Это сэкономит вам несколько символов. Кроме того, если вы хотите быть дерзким, вы можете поменять\n
на `` и сохранить символ.C, 98 символов
источник
к (23 знака)
источник
Mathematica 61
источник
Befunge, 97 (размер сетки 37x4 = 148)
Иметь лучший ответ Befunge на этот вопрос. Это Befunge-93 специально; Я мог бы сделать его еще более компактным с Befunge-98. Я включу это в будущее редактирование.
Поскольку вы не можете работать со строками в Befunge, лучшее, что я мог сделать, - это вычислить обратное число каждого числа (которое, я удивлен, я смог обойтись без
p
иg
), и сравнить его с исходным числом. Обратная цифра занимает большую часть кода (в основном целые третью и четвертую строки).Обратите внимание, что программа в ее нынешнем виде печатает числа в обратном направлении от ввода до 0. Если это большое дело, дайте мне знать. (Задача состоит только в том, чтобы перечислять их, а не конкретно в порядке возрастания.)
источник
\n
одиночку, поэтому их длина составляет 94 байта. Я не думаю, что ваш "размер сетки" имеет какое-то особое значение.05AB1E , 5 байтов (не конкурирует)
Язык ставит после проблемы и, следовательно, не конкурирует . Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
LʒÂQ
4, еще не конкурирует ..Brachylog (2), вопрос о языковых постдатах:
С форматом ввода / вывода, указанным в вопросе, 8 байтов
Попробуйте онлайн!
С современными правилами ввода / вывода PPCG, 4 байта
Попробуйте онлайн!
Это функция, которая генерирует все выходные данные, а не полная программа, как в предыдущем примере, и поэтому не соответствует спецификации, как написано, но я подумал, что покажу, как будет выглядеть программа, если бы вопрос был написан современным стандартам ввода / вывода (которые разрешают использование функций и вывод через генераторы).
объяснение
Для полной версии программы мы создаем временную переменную
A
для хранения выходных данных, явно обозначаем ее (это делается неявно для основного предиката программы) и используем хорошо известнуюẉ⊥
технику для вывода элементов генератора на стандартный вывод.источник
питон
источник
Groovy, 83
источник
Q (34 символа)
Передайте n вместо n + 1 в качестве аргумента для этого Q-решения.
источник
Вопрос, 32
источник
Q (33)
Вероятно, более удобный способ сделать это, но в любом случае, пример использования (вы вводите n + 1, чтобы добраться до n):
Предложение от tmartin, сводится к 29:
То же использование.
источник
Python, 106 символов
использование:
источник
C # (
217214191 символ)Гольф версия:
Удобочитаемый:
Это выводит палиндромы в порядке убывания, используя оператор n -> 0. (как n идет к 0).
* Отредактированная версия заменяет do ... while на while, сохраняя 3 символа, но теперь вы должны ввести с n + 1.
* отредактировано: найден лучший способ перевернуть строку без преобразования в массив:
Удобочитаемый:
источник
PHP 53
Может ли 53 быть ниже? Четыре разных варианта:
Если вы хотите получить фанк ...
PHP 47
Вы должны игнорировать текст ошибки. Однако числа палиндрома все еще выводятся в командную строку.
источник
Пиф, 11
Пример:
источник