Вы заметили, что это палиндром?
Введите
неотрицательное целое число или строку, представляющую его
Выведите
4 возможных выхода, представляющих два свойства числа:
- это палиндром
- хитрый # 2
Хитрое свойство # 2
Если число не является палиндромом, это свойство отвечает на вопрос " Имеют ли одинаковые значения первая и последняя цифры?"
Если число равно палиндрому, это свойство отвечает на вопрос « Имеют ли одинаковые значения первая и средняя цифры?». Для четных длин средняя цифра является одной из двух центральных цифр.
Примеры
12345678 -> False False
Это не палиндром, первая и последняя цифры имеют разное соотношение12345679 -> False True
Это не палиндром, первая и последняя цифры имеют одинаковое соотношение12344321 -> True False
Это палиндром, первая цифра 1 и средняя цифра 4 имеют разное соотношение123454321 -> True True
Это палиндром, первая цифра 1 и средняя цифра 5 имеют одинаковое соотношение
PS
Вы должны решить тип и формат вывода. Это могут быть любые 4 различных значения. Просто упомяните это в своем ответе.
источник
Ответы:
05AB1E,
15,1413 байт (благодаря Riley и carusocomputing)Попробуй онлайн
Возвращает в скобках, если это палиндром
Возвращает с 0, если четность отличается, с 1, если он одинаков
Ð
Добавьте вход, чтобы у меня было достаточно ввода для работыR
Обратный последний элемент стекаQ
Посмотрите, если это то же самое (берет два верхних элемента и выполняет ==)i
Если утверждение, так проходит только тогда, когда это палиндром2
Нажмите номер 2ä
Разделить вход на 2 равных среза¨
Выдвиньте первый элемент разделения (1264621 приводит к 1264)}
Конец, еслиÈ
Проверьте, является ли последний элемент четным¹
Нажмите первый вход сноваR
Отменить этот входÈ
Проверьте, если это даже сейчасQ
Проверьте, совпадают ли эти четные результаты и неявно выведитеисточник
¨
вместо1£
.,
, неявный вывод. Кроме того, вместо того , чтобы2ä
вы можете использовать раздваиваются:Â
; экономия 2 байтов за 12:ÐRQi¨}ȹRÈQ
,
должно подтолкнуть вас к лидерству;).PHP,
5552 байтапринимает данные от STDIN; беги с
-R
.выход:
10
для палиндрома и того же паритета11
для палиндрома и разного соотношения0
для непалиндрома и того же паритета1
для непалиндрома и другого паритетаПримечания:
strlen($n)/2
==log($n,10)/2
==log($n,100)
$n[1*log($n,100)]
$n[0*log($n,100)]
источник
<?=
вместоecho
sandbox.onlinephpfunctions.com/code/...$argn
определен только с-R
, и это не позволяет теги.$argn
также доступна с-F
. Но нм.Желе ,
1614 байтовПопробуйте онлайн!
Выводит две строки:
1
для палиндрома,0
для не0
для хитрости № 2 ,1
для необъяснение
источник
Python 2 ,
706866 байтПопробуйте онлайн!
источник
PowerShell ,
11499 байтПопробуйте онлайн!
Сохранено 15 байтов благодаря @Sinusoid.
Входные данные в виде строки. Выводит массив типа
(0|1) (True|False)
с0
указанием «не палиндром» и1
указанием «палиндром», аTrue
указание четности совпадает, и вFalse
противном случае.Это делается с помощью псевдо-троичного и индексации в соответствующем месте
(a,b)[index]
. Индекс($n-eq-join$n[$n.length..0])
проверяет, является ли ввод палиндромом. Если это не так , мы беремa
часть, которая представляет собой0
соединенную с ли четность первой цифрой$n[0]
является-eq
UAL четности последней цифры$n[-1]
. В противном случае мы находимся в тойb
части, которая1
связана с тем , равно ли$z
(четность первой цифры)-eq
четности средней цифры$n[$n.length/2]
.Ранее мне нужно
"$($n[0])"
было получить первую цифру для правильного приведения в виде целого числа, поскольку в$n[0]
результатеchar
оператор a и оператор по модулю%
объединяютchar
s на основе значения ASCII, а не литерального значения, тогда как astring
делает литеральное значение. Однако @Sinusoid помог мне увидеть, что все0,1,2,...,9
литеральные значения имеют одинаковую четность48,49,50,...,57
, поэтому, если он использует значение ASCII, мы все равно получим тот же результат.Этот массив остается в конвейере, а вывод неявным.
источник
$
когда вы делали модуль%2
на число? Я попробовал это сам, и не было необходимости, если я делал каждый шаг по отдельности, но это когда вы помещаете его в массив? PowerShell рассматривает его как другой тип переменной?$n[0]
индексировании он выглядит какchar
. Бросок отchar
кint
заставлено%
оператору не переходит от'1'
к1
, но в ASCII - значение, так что это49
."$( )"
Делает явное приведение строки вместо этого, который правильно преобразует его1
. ... Хотя, теперь, когда вы упоминаете, то соотношение в0..9
такой же , как ASCII48..57
, так что я могу , вероятно , гольф , что вниз. Благодарность!VBA,
11799 байтСохранено 18 байт благодаря Титу
После форматирования он не расширяется:
Вот результаты данного теста:
источник
&1
вместоmod 2
. Вы можете также избавиться отIf/Then
сr=r+2-2*(left(s,1)-b &1)
или даже лучше ,If s = StrReverse(s) then r=2
иr=r+1-(left(s,1)-b &1)
... и 2 байта прочь с реверсирования Tricky # 2:r=r+(left(s,1)-b &1)
; сохранить больше с печатью непосредственно:Debug.Print r+(left(s,1)-b &1)
. Должно быть 95 байтов тогда; 98 если&1
не работает.And
вместо&
. Я понял, как реализовать ваше первое предложение, но я не мог понять, как вы хотели изменить 3-ю строкуStrReverse
.Sub p(s);b=s;If s=StrReverse(s)Then r=2:b=Mid(s,Len(s)/2+.1,1);Debug.?r+(Left(s,1)-b&1);End Sub
-> 0/2 для палиндромов, 1/0 для Tricky # 2Mid()
сLeft(s,Len(s)/2+1)
или около того .Len(s)/2
= до4.5
какой VBA будет округляться4
. Если это 7 символов, тоLen(s)/2
=3.5
который VBA будет также вокруг к4
. Добавление0.1
исправляет безумие.Perl 6 , 48 байт
Попытайся
приводит к
(True True)
(True False)
(False True)
или(False False)
Expanded:
источник
Ява 8,
205197182168134 байтаВыходы:
1
для ложно-ложно;2
за ложь-истину;3
для истинно-ложного;4
для правда-правда.Объяснение:
Попробуй это здесь.
источник
Haskell , 89 байт
Попробуйте онлайн! Использование:
f "12345"
. Возвращает0
для True True,1
для True False,2
для False True и3
для False False.Функция
#
преобразует оба цифровых символа в их коды символов ascii и суммирует их. Если оба четны или оба нечетны, сумма будет четной, в противном случае, если один четный, а другой нечетный, сумма будет нечетной. Расчет по модулю два,#
возвращает0
для равного паритета и в1
противном случае.f
проверяет, является ли входная строкаx
палиндромом. Если нет, то#
вызывается с,x
и последний результатx
и два добавляется к результату, в противном случае, еслиx
это палиндромный вызов#
со средним символомx
вместо и оставить результат как есть.источник
Котлин , 142 байта
Попробуйте онлайн!
источник
REXX,
104100 байтВозвращает логическое значение пары
0 0
,0 1
,1 0
или1 1
.источник
R
115109105 байтПринимает ввод от стандартного ввода. Возвращает
FALSE FALSE
для False False,FALSE TRUE
для False True,TRUE FALSE
для True False иTRUE TRUE
для True True.источник
AWK,
9796 байтСамое простое использование - поместить код в файл:
OddEven
затем выполните:Вывод - это, по сути, битовая сумма сравнений в Вопросе, например
Я пытался удалить
()
из,(s?0:2)
но это как-то портит приоритет оператора.источник
CJam, 32 байта
Ввод - это число сверху стека.
Объяснение:
источник
Рубин , 60 + 1 = 61 байт
Использует
-n
флаг.Попробуйте онлайн!
источник
Groovy,
326303 байтаСокращенный код:
Оригинальный код (с пояснением):
Оригинальный код (без пояснения):
Входные данные:
Выход:
источник