Chaînes divisibles

Sep 09 2020

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

3 LuisMendo Sep 09 2020 at 15:18

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 un 0, 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
8 ovs Sep 09 2020 at 15:57

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

8 rak1507 Sep 09 2020 at 17:20

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!

7 ovs Sep 09 2020 at 15:06

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
5 Shaggy Sep 10 2020 at 16:17

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é)

4 Mukundan314 Sep 09 2020 at 17:35

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
3 Shaggy Sep 09 2020 at 15:57

JavaScript, 32 octets

Ouput est inversé.

s=>Buffer(s).some(c=>c%s.length)

Essayez-le en ligne!

3 Kaddath Sep 10 2020 at 21:30

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

2 Dion Sep 09 2020 at 15:06

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

2 GalenIvanov Sep 09 2020 at 15:34

K (oK) , 11 octets

{~+/(#x)!x}

Essayez-le en ligne!

2 madlaina Sep 09 2020 at 16:48

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.

2 Razetime Sep 09 2020 at 17:13

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)
2 Razetime Sep 09 2020 at 17:39

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!

2 NahuelFouilleul Sep 09 2020 at 21:05

Perl 5 -pF , 20 octets

$_=!grep ord()%@F,@F

Essayez-le en ligne!

2 Noodle9 Sep 09 2020 at 16:36

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)
2 J42161217 Sep 09 2020 at 15:11

Wolfram Language (Mathematica) , 40 octets

{0}==##&@@ToCharacterCode@#~Mod~Tr[1^#]&

Essayez-le en ligne!

merci à @att pour avoir sauvé quelques octets

1 Adám Sep 09 2020 at 15:24

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

1 LiefdeWen Sep 09 2020 at 15:56

C # (.NET Core) , 25 octets

a=>a.All(x=>x%a.Length<1)

Essayez-le en ligne!

1 Shaggy Sep 09 2020 at 16:36

Japt -e , 6 octets

c vNÎÊ

Essayez-le

1 KevinCruijssen Sep 09 2020 at 16:42

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)
1 ovs Sep 09 2020 at 15:18

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
1 DominicvanEssen Sep 09 2020 at 16:20

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 ...

1 Stuart Sep 11 2020 at 16:10

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) 
1 Dion Sep 10 2020 at 20:07

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
1 xash Sep 12 2020 at 15:48

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
1 Steve28 Sep 13 2020 at 08:06

Python 3 , 55 52 octets

N=input();print(not sum([ord(i)%len(N) for i in N]))

Essayez-le en ligne!

1 2014MELO03 Sep 17 2020 at 03:26

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
Neil Sep 09 2020 at 16:06

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.

GalenIvanov Sep 09 2020 at 16:06

Facteur , 62 octets

: f ( s -- ? ) dup length [ mod ] curry [ + ] map-reduce 0 = ;

Essayez-le en ligne!

BlackPanther Sep 09 2020 at 18:08

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!