Avez-vous remarqué qu'il s'agit d'un palindrome?
Entrez
un nombre entier non négatif ou une chaîne le représentant
Sortie
4 sorties possibles, représentant deux propriétés de nombre:
- est-ce palindrome
- délicat # 2
Propriété Tricky # 2
Si le nombre n'est pas palindrome, cette propriété répond à la question "Les premier et dernier chiffres ont-ils la même parité?"
Si le nombre est palindrome, cette propriété répond à la question "Le premier et le milieu ont-ils la même parité?". Pour les longueurs paires, le chiffre du milieu est l'un des deux chiffres du centre.
Exemples
12345678 -> Faux Faux
Ce n'est pas un palindrome, les premier et dernier chiffres ont une parité différente12345679 -> Faux Vrai
Ce n'est pas un palindrome, les premier et dernier chiffres ont la même parité12344321 -> Vrai Faux
C'est palindrome, le premier chiffre 1 et le chiffre du milieu 4 ont une parité différente123454321 -> Vrai Vrai
C'est palindrome, le premier chiffre 1 et le chiffre du milieu 5 ont la même parité
PS
Vous êtes libre de décider du type et du format de sortie. Il peut s'agir de 4 valeurs distinctes. Mentionnez-le simplement dans votre réponse.
la source
Réponses:
05AB1E,
15,1413 octets (Merci à Riley et à carusocomputing)Essayez en ligne
Renvoie entre parenthèses s'il s'agit d'un palindrome
Renvoie 0 si la parité est différente, 1 si elle est la même
Ð
Ajouter une entrée, de sorte que j'ai suffisamment d'entrée pour travailler avecR
Inverse le dernier élément de la pileQ
Regardez si c'est la même chose (prend les deux éléments supérieurs et exécute ==)i
Si la déclaration ne passe que lorsque c'est un palindrome2
Appuyez sur le chiffre 2ä
Divisez l'entrée en 2 tranches égales¨
Appuyez sur le premier élément de la scission (1264621 résultats en 1264)}
Fin siÈ
Vérifiez si le dernier élément est pair¹
Appuyez à nouveau sur la première entréeR
Inverser cette entréeÈ
Vérifiez si c'est encore maintenantQ
Vérifiez si ces résultats pairs sont les mêmes et imprimez implicitementla source
¨
place de1£
.,
sortie implicite de fin . Aussi au lieu de2ä
vous pouvez utiliser bifurqué:Â
; économies de 2 octets pour 12:ÐRQi¨}ȹRÈQ
,
devrait vous pousser en tête;).PHP,
5552 octetsprend l'entrée de STDIN; courir avec
-R
.production:
10
pour palindrome et même parité11
pour palindrome et parité différente0
pour non-palindrome et même parité1
pour non-palindrome et parité différenteRemarques:
strlen($n)/2
==log($n,10)/2
==log($n,100)
$n[1*log($n,100)]
$n[0*log($n,100)]
la source
<?=
au lieu deecho
sandbox.onlinephpfunctions.com/code/…$argn
est uniquement défini avec-R
, et cela n'autorise pas les balises.$argn
est également disponible avec-F
. Mais nm.Gelée ,
1614 octetsEssayez-le en ligne!
Produit deux lignes:
1
pour palindrome,0
pour non0
pour délicat # 2 ,1
pour ne pasExplication
la source
Python 2 ,
706866 octetsEssayez-le en ligne!
la source
PowerShell ,
11499 octetsEssayez-le en ligne!
15 octets enregistrés grâce à @Sinusoid.
Entrées sous forme de chaîne. Produit un tableau de type
(0|1) (True|False)
, avec l'0
indication "pas un palindrome" et l'1
indication "palindrome", et l'True
indication de parité correspond etFalse
autrement.Cela se fait en utilisant un pseudo-ternaire et une indexation à l'endroit approprié
(a,b)[index]
. L'index($n-eq-join$n[$n.length..0])
vérifie si l'entrée est un palindrome. Si ce n'est pas le cas, nous prenons laa
portion, qui est un0
couplé avec si la parité du premier chiffre$n[0]
est-eq
égale à la parité du dernier chiffre$n[-1]
. Sinon, nous sommes dans lab
partie, qui est1
couplée avec si$z
(la parité du premier chiffre) est-eq
égale à la parité du chiffre du milieu$n[$n.length/2]
.Auparavant, je devais
"$($n[0])"
obtenir le premier chiffre à convertir correctement en entier, car les$n[0]
résultats de achar
et l'opérateur modulo%
fusionnentchar
s en fonction de la valeur ASCII, pas de la valeur littérale, tandis que astring
fait la valeur littérale. Cependant, @Sinusoid m'a aidé à voir que0,1,2,...,9
les valeurs littérales ont toutes la même parité que48,49,50,...,57
, donc s'il utilise la valeur ASCII, nous obtenons toujours le même résultat.Ce tableau est laissé sur le pipeline et la sortie est implicite.
la source
$
lorsque vous avez modulé%2
un nombre? J'ai essayé moi-même et ce n'était pas nécessaire si je faisais chaque étape individuellement, mais c'est quand vous le mettez dans un tableau? PowerShell le traite-t-il comme un type de variable différent?$n[0]
index, il sort comme unchar
. Le cast dechar
àint
forcé par l'%
opérateur ne va pas de'1'
à1
, mais à la valeur ASCII , donc c'est49
. Le"$( )"
fait une conversion explicite en chaîne à la place, qui la convertit correctement en1
. ... Bien que, maintenant que vous le mentionnez, la parité de0..9
soit la même que ASCII48..57
, donc je peux probablement jouer au golf. Merci!VBA,
11799 octetsSauvegardé 18 octets grâce à Titus
Il ne se développe pas beaucoup une fois formaté:
Voici les résultats des cas de test donnés:
la source
&1
au lieu demod 2
. Vous pouvez également vous débarrasser duIf/Then
avecr=r+2-2*(left(s,1)-b &1)
ou encore mieuxIf s = StrReverse(s) then r=2
etr=r+1-(left(s,1)-b &1)
... et 2 octets de moins en inversant le Tricky # 2r=r+(left(s,1)-b &1)
:; économiser plus avec l' impression directement:Debug.Print r+(left(s,1)-b &1)
. Doit alors être de 95 octets; 98 si&1
ne fonctionne pas.And
au lieu de simplement&
. J'ai compris comment mettre en œuvre votre première suggestion, mais je n'ai pas pu comprendre comment vous vouliez changer la 3ème ligne avecStrReverse
.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 pour les palindromes, 1/0 pour Tricky # 2Mid()
avecLeft(s,Len(s)/2+1)
ou ainsi.Len(s)/2
= vers4.5
quel VBA arrondira4
. S'il fait 7 caractères, alorsLen(s)/2
= vers3.5
quel VBA sera également arrondi4
. L'ajout0.1
corrige la folie.Perl 6 , 48 octets
Essayez-le
résulte en
(True True)
(True False)
(False True)
ou(False False)
Étendu:
la source
Java 8,
205197182 182168134 octetsSorties:
1
pour faux-faux;2
pour faux-vrai;3
pour vrai-faux;4
pour vrai-vrai.Explication:
Essayez-le ici.
la source
Haskell , 89 octets
Essayez-le en ligne! Utilisation:
f "12345"
. Renvoie0
True True,1
True True,2
False True et3
False False.La fonction
#
convertit les deux caractères numériques en leurs codes de caractères ascii et les additionne. Si les deux sont pairs ou les deux sont impairs, la somme sera paire, sinon si l'un est pair et l'autre impair, la somme sera impaire. Calculer modulo deux,#
renvoie0
pour une parité égale et1
autrement.f
vérifie si la chaîne d'entréex
est un palindrome. Sinon, alors#
est appelé avecx
et le dernier caractère dex
et deux est ajouté au résultat, sinon six
est un appel palindromique#
avec le caractère du milieu à lax
place et laisse le résultat tel quel.la source
Kotlin , 142 octets
Essayez-le en ligne!
la source
REXX,
104100 octetsRenvoie la paire de valeur logique
0 0
,0 1
,1 0
ou1 1
.la source
R,
115109105 octetsPrend l'entrée de stdin. Renvoie
FALSE FALSE
pour Faux Faux,FALSE TRUE
pour Faux Vrai,TRUE FALSE
pour Vrai Faux etTRUE TRUE
pour Vrai Vrai.la source
AWK,
9796 octetsL'usage le plus simple est de placer le code dans un fichier:
OddEven
ensuite:La sortie est essentiellement la somme des bits des comparaisons dans la question, par exemple
J'ai essayé de supprimer le
()
de(s?0:2)
mais cela gâche en quelque sorte la priorité des opérateurs.la source
CJam, 32 octets
L'entrée est un nombre au-dessus de la pile.
Explication:
la source
Ruby , 60 + 1 = 61 octets
Utilise le
-n
drapeau.Essayez-le en ligne!
la source
Groovy,
326303 octetsCode réduit:
Code d'origine (avec explication):
Code d'origine (sans explication):
Contribution:
Production:
la source