Chaînes divisibles
Tâche
Étant donné une chaîne s, affiche une valeur de vérité si le code ASCII de chaque lettre est divisible par la longueur de s, et un faux dans le cas contraire.
Entrée sortie
L'entrée est une chaîne non vide contenant uniquement de l'ASCII [32-126]. La sortie est une valeur de vérité / faux standard. Notez que vous pouvez changer les valeurs, par exemple renvoyer 0/ Falsesi divisible et vice versa
Cas de test
Input Output
Hello False (72 101 108 108 111), 5
lol True (108 111 108), 3
Codegolf False (67 111 100 101 103 111 108 102), 8
A True (65), 1
nope False (110 111 112 101),4
8 8 True (56 32 32 56), 4
Réponses
MATL , 4 octets
tn\~
- Pour les chaînes divisibles, la sortie est un vecteur contenant uniquement
1s, ce qui est vrai . - Sinon, la sortie est un vecteur contenant plusieurs
1s et au moins un0, ce qui est faux .
Essayez-le en ligne! Ou vérifiez tous les cas de test, y compris le test de véracité / fausseté.
Comment ça fonctionne
t % Implicit input. Duplicate
n % Number of elements
\ % Modulo
~ % Negate. Implicit display
Befunge-98 (FBBI) , 31 octets
La sortie se fait via le code de sortie, 1pour la vérité, 0pour les cas faux.
#v~\1+
v>53p
>:#v_1q
^ >' %#@_
Essayez-le en ligne!
Code fonctionnant avec des entrées lolet ab:
les petits nombres représentent des valeurs d'octet littérales
Haskell , 42 39 octets
(<1).sum.(map=<<flip(mod.fromEnum).length)
f s=sum[fromEnum c`mod`length s|c<-s]<1
3 octets en moins grâce à ovs et xnor!
Essayez-le en ligne!
05AB1E , 5 octets
ÇsgÖP
Essayez-le en ligne!
Commenté
# implicit input "lol"
Ç # push ASCII value [108, 111, 108]
s # swap (with input) [108, 111, 108], "lol"
g # length [108, 111, 108], 3
Ö # is divisible? [1, 1, 1]
P # product 1
Rockstar , 205 192 175 162 octets
Eh bien, c'était amusant. Rockstar n'a aucun moyen de lire directement la longueur d'une chaîne, ne peut pas convertir les caractères en points de code et n'a pas d'opérateur modulo. Surpris cela a fonctionné ce court!
listen to S
cut S
X's0
D's0
while S at X
N's32
while N-127
cast N into C
if C is S at X
let M be N/S
turn down M
let D be+N-S*M
let N be+1
let X be+1
say not D
Essayez-le ici (le code devra être collé)
Pyth , 8 octets
!sm%CdlQ
Essayez-le en ligne!
!sm%CdlQ
m : map implicit input on
: lambda d:
Cd : Ascii value of d
% lQ : mod length of input
s : sum result of map
! : logical negate it
JavaScript, 32 octets
Ouput est inversé.
s=>Buffer(s).some(c=>c%s.length)
Essayez-le en ligne!
PHP , 56 52 octets
for(;$c=ord($argn[$i++]);$c%strlen($argn)?die(f):1);
Essayez-le en ligne!
La sortie est inversée
L'exécution s'arrête avec fsi un caractère n'est pas divisible, ou une chaîne vide (falsifiée en PHP) si tous sont divisibles
EDIT: sauvé 4 octets grâce à @ 640KB
Python 2 , 41 39 octets
lambda s:all(ord(i)%len(s)<1for i in s)
Essayez-le en ligne!
-2 octets grâce à @ovs
K (oK) , 11 octets
{~+/(#x)!x}
Essayez-le en ligne!
Rouille , 36 octets
|s|s.iter().all(|x|1>x%s.len()as u8)
Essayez-le en ligne!
Prend l'entrée comme a &[u8], sorties a bool.
Pip , 12 octets
!$+(A_Ma)%#a
Essayez-le en ligne!
Explication
!$+(A_Ma)%#a a → input
(A_Ma) Map a to Unicode/ASCII codepoints
%#a Modulo the list by it's length
$+ Sum up the remainders
! Not(returns 0 for any positive number, 1 for 0)
Rubis , 43 37 36 32 octets
->a{a.bytes.all?{|n|n%a.size<1}}
si seulement la carte pouvait être utilisée sur des chaînes.
-10 octets d'ovs.
-1 octet de Dingus.
Essayez-le en ligne!
Perl 5 -pF , 20 octets
$_=!grep ord()%@F,@F
Essayez-le en ligne!
C (gcc) , 54 53 octets
l;r;f(char*s){l=strlen(s);for(r=0;*s;)r|=*s++%l;l=r;}
Essayez-le en ligne!
Renvoie falsey si la valeur ASCII de chaque caractère est divisible par la longueur de la chaîne d'entrée ou truey sinon.
Explication:
l;r;f(char*s){l=strlen(s);for(r=0;*s;)r|=*s++%l;l=!r;}
l;r; // Declare 2 int variables
f( // Function f taking
char*s){ // string parameter s
l=strlen(s); // Store length of s in l
for( // Loop
r=0; // initialising r to 0
*s;) // until end of s
r|= // Bitwise or r with
*s // the ASCII value of the next
// character...
++ // Aside: push s pointer forward
%l; // ... mod the string length
r=l; // Return r (r will be 0
// iff every character was
// divisible by l)
Wolfram Language (Mathematica) , 40 octets
{0}==##&@@ToCharacterCode@#~Mod~Tr[1^#]&
Essayez-le en ligne!
merci à @att pour avoir sauvé quelques octets
APL (Dyalog Extended) , 7 octets ( SBCS )
Fonction de préfixe tacite anonyme
⍱≢|⎕UCS
Essayez-le en ligne!
⍱ aucun des énoncés suivants n'est-il vrai (non nul)?
≢ la durée
| divise (lit. division reste lors de la division)
⎕UCS les points de code
C # (.NET Core) , 25 octets
a=>a.All(x=>x%a.Length<1)
Essayez-le en ligne!
Japt -e , 6 octets
c vNÎÊ
Essayez-le
MathGolf , 4 octets
$h÷╓
Saisie sous forme de liste de caractères.
Essayez-le en ligne.
Explication:
$ # Get the codepoint of each character in the (implicit) input-list
h # Push the length of this list (without popping the list itself)
÷ # Check for each codepoint if it's divisible by this length
╓ # Pop and push the minimum of the list
# (after which the entire stack joined together is output implicitly as result)
Gelée , 4 octets
LḍOP
Essayez-le en ligne! ou Vérifiez tous les cas!
Commentaires: (Au moins je pense que ça marche comme ça)
P # product of ...
L # does the length
ḍ # ... divide ...
O # the char codes
R , 39 38 octets
Edit: -1 octet grâce à la nouvelle règle que nous pouvons sortir TRUE pour FALSE et FALSE pour TRUE
function(s)any(utf8ToInt(s)%%nchar(s))
Essayez-le en ligne!
Ou essayez la version originale de 39 octets qui renvoie TRUE pour TRUE ...
Clojure, 41 caractères
(every? #(= 0 (mod (int %) (count x))) x)
Suppression des espaces après le commentaire 37 caractères
(every? #(= 0(mod(int %)(count x)))x)
MAWP , 34 33 24 23 octets
`|_=M0=A0/[M%{0:.}?`]1:
Essayez-le!
Merci à @Razetime d'avoir économisé 9 octets!
Explication:
` Remove starting 1 on stack
| Push input on stack as ASCII codes
_=M Set variable M to length of stack (length of input)
0=A Set variable A to 0
0/ Push 0 and cycle stack
[ Start of loop
M% Modulo by M
{0:.} If not 0 then print 0 and terminate
?` If 0 then pop value
] End of loop
1: Print 1
Brachylog , 8 octets
ạfᵐ∋ᵛ~l?
Essayez-le en ligne!
ạfᵐ∋ᵛ~l?
ạ characters to integer
fᵐ find all factors
∋ᵛ every list of factors contain …
~l? the length of the input
Version alternative,
⟨ạzl⟩%ᵛ0
⟨fhg⟩ forks! fA & gB ∧ [A, B]h
ạzl zip the code blocks with the length;
[[108, 3], [111, 3], [108, 3]]
%ᵛ0 every list must be 0 after modulo
Python 3 , 55 52 octets
N=input();print(not sum([ord(i)%len(N) for i in N]))
Essayez-le en ligne!
GolfScript , 20 octets
.,0@{(3$%@+\}3$*;!\;
Essayez-le en ligne!
Cela génère 1 si la chaîne est divisible et 0 si ce n'est pas le cas. Soit S la chaîne et L sa longueur.
.,0@ # The stack from bottom up will be: L 0 S
{ }3$* # Execute this block L times ( # Separate first char from the string as a number 3$% # Previous number mod L
@+\ # Add result to the acumulator
; # Discard the ""
! # 1 iff the acumulator is 0
\; # Discard L
Charbon , 8 octets
¬⊙θ﹪℅ιLθ
Essayez-le en ligne! Le lien est vers la version verbeuse du code. La sortie est un booléen Charcoal, c'est- -à- dire pour vrai, rien pour faux. Explication:
θ Input string
⊙ Is there a character where
ι Current character
℅ Ordinal
﹪ Modulo (i.e. is not divisible by)
θ Input string
L Length
¬ Boolean NOT
Implicitly print
⬤θ¬﹪℅ιLθ fonctionne aussi bien sûr.
Facteur , 62 octets
: f ( s -- ? ) dup length [ mod ] curry [ + ] map-reduce 0 = ;
Essayez-le en ligne!
C # (compilateur interactif Visual C #) , 81 octets
(s)=>{var bs = ASCIIEncoding.ASCII.GetBytes(s);return bs.All(b=>b%s.Length==0);};
Essayez-le en ligne!
C # (compilateur interactif Visual C #) ,
27
26 octets
s=>s.All(c=>c%s.Length<1);
Essayez-le en ligne!