Напишите короткую программу по 196-му алгоритму . Алгоритм начинается с целого числа, а затем добавляет обратный к нему, пока не будет достигнут палиндром.
например
input = 5280
5280 + 0825 = 6105
6105 + 5016 = 11121
11121 + 12111 = 23232
output = 23232
вход
целое число, которое не является числом Лирхрела (то есть, оно в конечном итоге дает палиндром по этому алгоритму, а не продолжается бесконечно)
Выход
палиндром достиг.
code-golf
palindrome
Eelvex
источник
источник
Ответы:
APL (22 символа)
Это работает в Dyalog APL. Вот объяснение справа налево:
{ ... }⍞
: Получить ввод от пользователя в виде символов (⍞
) и передать его нашей функции ({ ... }
).⋄
разделяет операторы, поэтому мы смотрим на них слева направо):a≡⌽a←⍕(⍎⍵)+⍎⌽⍵ : a
: Оцените (⍎
) правильный аргумент (⍵
) reverse (⌽
) и добавьте его в оценочную версию самого правильного аргумента. Затем отформатируйте результат (⍕
т. Е. Задайте его символьное представление), присвойте←
его переменнойa
() и, наконец, проверьте,a
эквивалентен ли обратный результатa
(т. Е. Являетсяa
ли палиндром?). Если это правда, вернутьa
; иначе...∇a
:a
Обратная связь с нашей функцией (∇
неявная ссылка на себя).Пример:
источник
{⍵=A←⍎⌽⍕⍵:⍵⋄∇A+⍵}⎕
, Вы сохраняете брекеты, реверс и eval.GolfScript, 29 символов
Выбранный комментарий
Мясо программы - это
do
, конечно, петля. Так что я просто расскажу об этом..`
копирует число и делает его строковым.-1%
копирует эту строковую версию и переворачивает ее..@
копирует обратную версию и переносит оригинальную не полностью измененную версию на передний план.Так, например, число 5280. На этом этапе, стек:
5280 "0825" "0825" "5280"
. Этап настроен для сравнения. (После сравнения стопка будет оставлена5280 "0825"
вне зависимости от того, какие --- элементы для сравнения были удалены.);
) и верните 0 (чтобы завершитьdo
цикл).~
) обратную строку (чтобы сделать ее числом), добавьте (+
) это к исходному номеру и верните 1 (чтобы продолжитьdo
цикл).источник
Python 2, 55 байт
Следующее предложение JPvdMerwe:
Python 2, 62:
источник
n
как целое число, вы можете сократить на 6 символов, проверьте код: meta.codegolf.stackexchange.com/q/75/62Рубин - 56 символов
источник
Просто тренирую свои навыки Pyth, а не серьезного соперника.
Pyth, 16 байт
Эквивалент Python 3:
источник
J 25
2731источник
CJam,
2221 байтCJam был создан после того, как был задан этот вопрос, поэтому технически это неверное представление. Но я нашел вопрос интересным, так что здесь идет:
Объяснение:
Основная логика заключается в том, что на каждой итерации while вы сначала проверяете, достигнут ли палиндром или нет. Если нет, добавьте обратный номер. Довольно много, что алгоритм!
Попробуйте онлайн здесь
источник
Это реальный соперник, так как J существует уже несколько десятилетий.
J (16 байт)
Это глагол, поэтому его можно присвоить переменной в сеансе J и использовать следующим образом:
Как это работает:
источник
Python: 66
источник
Perl, 40 символов
источник
Скала 82
источник
JAGL Alpha 1.2 - 19, 21 со стандартным
Не спорю , просто получаю некоторый опыт работы с моим языком
Ожидает число от stdin
объяснение
источник
05AB1E , 7 байтов (не конкурирует)
Не конкурирует , так как язык задним числом.
Код:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
hello
. Бифуркация сохранит исходную строку и переместит строку в обратном направлении. Это сокращение от дубликата и обратного .Брахилог , 8 байт
Попробуйте онлайн!
Несколько похоже на одну из первых программ на брахилоге, которую я видел и был заинтригован из вступительного видео на брахилоге .
источник
PHP -
5448 символовТест:
источник
$str =
кошачью вещь для будущего игры в гольф. Черт возьми, намного лучше, чем использовать,STDIN
и все же лучше, чем$argv[0]
.Баш (64)
Вызов с: bash <имя файла> <номер>
источник
C # -
10399 символовC # никогда не преуспевает в гольфе. Элегантно, но многословно.
источник
В Q (39 символов)
Пример использования:
Редактировать:
До 34 сейчас, то же использование:
источник
источник
Желе , 9 байт (не конкурирует)
Очень простой ответ, просто для задачи кодирования на эзотерическом языке.
ṚḌ+µŒḂ¬$¿
Попробуйте онлайн!
Если этот ответ будет неясным или неправильным на любом уровне, не стесняйтесь указывать на него.
Спасибо Деннису за помощь в разработке этого первого небольшого фрагмента кода.
источник
Python. 85 символов:
Если вы не хотите выводить данные на каждой итерации:
(на один символ меньше)
источник
Windows PowerShell (63)
Я до сих пор ненавижу, что нет простого способа перевернуть строку.
источник
long
крупнейшего интегрального типа, который PowerShell поддерживает в любом случае, но все же я трачу два символа.Haskell
8987 символовНесколько читаемая версия:
Версия для гольфа была создана путем ручного встраивания и переименования оставшихся функций в имена отдельных персонажей.
источник
until
из Prelude, а также извлекая шаблон применения бинарного оператора кx
иr x
. Также используйтеreadLn
вместоgetLine
иread
. В результате сохраняется 20 символов:f%x=f x$read.reverse.show$x;main=readLn>>=print.until((==)%)((+)%)
r=(=<<read.reverse.show)
и просто использоватьr(==)`until`r(+)
. Помимо этого сохранения, это не обязательно должна быть полная программа, допустимая отправка может быть просто безымянной функцией из ранее. Это приводит вас к 41 байту: попробуйте онлайн!befunge, 57 байт
хотя код находится в сетке 4x19, так можно назвать его 76.
источник
C ++ TMP (256 символов)
Эта версия может быть немного сокращена, но трудно получить ответ из 256 символов. Вот версия без гольфа:
источник
Пайк, 13 байт (неконкурентный)
Попробуй это здесь!
источник
Добавить ++ , 57 байт
Попробуйте онлайн!
Как это работает
источник
Powershell,
6362 байта-1 байт благодаря @AdmBorkBork
Тестовый скрипт:
источник
;
междуparam($m)
иfor
.GNU dc, 46 байтов
Требуется GNU dc, мин. Версия 1.4 (для
R
команд).Вход и выход, как обычно, расположены на верху стека. Требуется удивительное количество кода для обратного преобразования цифр в DC (если я не пропустил что-то, что далеко не невозможно). У него есть числовой диапазон, который будет хорошо работать с такими входными данными (например, которые будут переполнены 32-битной беззнаковой арифметикой):
объяснение
источник
R
команда. Хорошее решение, хотя!R
это ново. С нетерпением ждем вашего метода!R ,
193109105 байт-84 байта благодаря Джузеппе! -4 до свидания благодаря JayCe!
Попробуйте онлайн!
источник
strsplit(x,"")
корочеstrsplit(x,NULL)
иel(L)
короче, чемL[[1]]
.as.double
корочеas.numeric
иstrtoi
короче обоих; вместо настройкиt
просто используйте это прямо в вашемif
утверждении. Кроме того, это рекурсивная функция, если я не ошибаюсь, поэтому вы должны поставитьf=
как часть вашего представления.utf8ToInt
возможность преобразования в цифры иintToUtf8
преобразования обратно. Это будет большая экономия байтов!while
петли-
вместоU
. Я также заменитьrev
с ,!
но это не спасает любой байт ...