String yang bisa dibagi

Sep 09 2020

Tugas

Diberikan string s, keluarkan nilai kebenaran jika kode ASCII dari setiap huruf dapat dibagi dengan panjang s, dan falsey sebaliknya.

Input output

Input adalah string tidak kosong yang hanya berisi ASCII [32-126]. Output adalah nilai kebenaran / kesalahan standar. Perhatikan bahwa Anda dapat mengganti nilai, misalnya mengembalikan 0/ Falsejika habis dibagi dan sebaliknya

Kasus uji

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

Jawaban

3 LuisMendo Sep 09 2020 at 15:18

MATL , 4 byte

tn\~
  • Untuk string dibagi output adalah vektor yang hanya berisi 1s, yang truthy .
  • Jika tidak output adalah vektor yang berisi beberapa 1s dan setidaknya satu 0, yang falsy .

Cobalah secara online! Atau verifikasi semua kasus uji termasuk uji kebenaran / kepalsuan.

Bagaimana itu bekerja

t   % Implicit input. Duplicate
n   % Number of elements
\   % Modulo
~   % Negate. Implicit display
8 ovs Sep 09 2020 at 15:57

Befunge-98 (FBBI) , 31 byte

Keluaran melalui kode keluar, 1sejujurnya, 0untuk kasus palsu.

#v~\1+
v>53p
>:#v_1q
^  >' %#@_

Cobalah secara online!


Kode berjalan dengan input loldan ab:

angka kecil mewakili nilai byte literal

8 rak1507 Sep 09 2020 at 17:20

Haskell , 42 39 byte

(<1).sum.(map=<<flip(mod.fromEnum).length)
f s=sum[fromEnum c`mod`length s|c<-s]<1

3 byte lebih sedikit berkat ovs dan xnor!

Cobalah secara online!

7 ovs Sep 09 2020 at 15:06

05AB1E , 5 byte

ÇsgÖP

Cobalah secara online!

Berkomentar

        # 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 bytes

Nah, ini menyenangkan. Rockstar tidak memiliki cara untuk membaca panjang string secara langsung, tidak dapat mengubah karakter menjadi titik kode, dan tidak memiliki operator modulo. Mengejutkan itu berhasil sesingkat ini!

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

Coba di sini (Kode perlu ditempelkan)

4 Mukundan314 Sep 09 2020 at 17:35

Pyth , 8 byte

!sm%CdlQ

Cobalah secara online!

!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 byte

Ouput dibalik.

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

Cobalah secara online!

3 Kaddath Sep 10 2020 at 21:30

PHP , 56 52 byte

for(;$c=ord($argn[$i++]);$c%strlen($argn)?die(f):1);

Cobalah secara online!

Output dibalik

Eksekusi berhenti dengan fjika ada karakter yang tidak habis dibagi, atau string kosong (salah dalam PHP) jika semuanya habis dibagi

EDIT: menghemat 4 byte berkat @ 640KB

2 Dion Sep 09 2020 at 15:06

Python 2 , 41 39 byte

lambda s:all(ord(i)%len(s)<1for i in s)

Cobalah secara online!

-2 byte berkat @ovs

2 GalenIvanov Sep 09 2020 at 15:34

K (oK) , 11 byte

{~+/(#x)!x}

Cobalah secara online!

2 madlaina Sep 09 2020 at 16:48

Rust , 36 byte

|s|s.iter().all(|x|1>x%s.len()as u8)

Cobalah secara online!

Mengambil input sebagai a &[u8], mengeluarkan a bool.

2 Razetime Sep 09 2020 at 17:13

Pip , 12 byte

!$+(A_Ma)%#a

Cobalah secara online!

Penjelasan

!$+(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

Ruby , 43 37 36 32 byte

->a{a.bytes.all?{|n|n%a.size<1}}

jika hanya peta yang bisa digunakan pada string ..

-10 byte dari ovs.

-1 byte dari Dingus.

Cobalah secara online!

2 NahuelFouilleul Sep 09 2020 at 21:05

Perl 5 -pF , 20 byte

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

Cobalah secara online!

2 Noodle9 Sep 09 2020 at 16:36

C (gcc) , 54 53 byte

l;r;f(char*s){l=strlen(s);for(r=0;*s;)r|=*s++%l;l=r;}

Cobalah secara online!

Mengembalikan falsey jika nilai ASCII dari setiap karakter dapat dibagi dengan panjang string input atau kebenaran sebaliknya.

Penjelasan:

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

Bahasa Wolfram (Mathematica) , 40 byte

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

Cobalah secara online!

terima kasih kepada @att karena telah menghemat beberapa byte

1 Adám Sep 09 2020 at 15:24

APL (Dyalog Extended) , 7 byte ( SBCS )

Fungsi awalan diam-diam anonim

⍱≢|⎕UCS

Cobalah secara online!

⍱ bukankah salah satu dari berikut ini benar (bukan nol)?

≢ panjangnya

| membagi (lit. sisa pembagian saat membagi)

⎕UCS poin kode

1 LiefdeWen Sep 09 2020 at 15:56

C # (.NET Core) , 25 byte

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

Cobalah secara online!

1 Shaggy Sep 09 2020 at 16:36

Japt -e , 6 byte

c vNÎÊ

Cobalah

1 KevinCruijssen Sep 09 2020 at 16:42

MathGolf , 4 byte

$h÷╓

Masukkan sebagai daftar karakter.

Cobalah secara online.

Penjelasan:

$     # 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

Jelly , 4 byte

LḍOP

Cobalah secara online! atau Verifikasi semua kasus!

Berkomitmen: (Setidaknya menurut saya ini berfungsi seperti ini)

   P  # product of ...
L     #   does the length 
 ḍ    #   ... divide ...
  O   #   the char codes
1 DominicvanEssen Sep 09 2020 at 16:20

R , 39 38 byte

Edit: -1byte berkat aturan baru bahwa kita dapat menampilkan TRUE untuk FALSE dan FALSE untuk TRUE

function(s)any(utf8ToInt(s)%%nchar(s))

Cobalah secara online!

Atau coba versi asli 39-byte yang mengeluarkan TRUE untuk TRUE ...

1 Stuart Sep 11 2020 at 16:10

Clojure, 41 karakter

(every? #(= 0 (mod (int %) (count x))) x)

Menghapus spasi setelah komentar 37 karakter

(every? #(= 0(mod(int %)(count x)))x) 
1 Dion Sep 10 2020 at 20:07

MAWP , 34 33 24 23 byte

`|_=M0=A0/[M%{0:.}?`]1:

Cobalah!

Terima kasih kepada @Razetime karena telah menghemat 9 byte!

Penjelasan:

`        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 byte

ạfᵐ∋ᵛ~l?

Cobalah secara online!

ạfᵐ∋ᵛ~l?
ạ        characters to integer
 fᵐ      find all factors
   ∋ᵛ    every list of factors contain …
     ~l? the length of the input

Versi alternatif,

⟨ạ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 byte

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

Cobalah secara online!

1 2014MELO03 Sep 17 2020 at 03:26

GolfScript , 20 byte

.,0@{(3$%@+\}3$*;!\;

Cobalah secara online!

Ini menghasilkan 1 jika string habis dibagi dan 0 jika tidak. Misalkan S menjadi string dan L panjangnya.

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

Arang , 8 byte

¬⊙θ﹪℅ιLθ

Cobalah secara online! Tautan adalah untuk verbose versi kode. Outputnya adalah Charcoal boolean, yaitu -benar, tidak ada yang salah. Penjelasan:

  θ         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θ juga bekerja tentu saja.

GalenIvanov Sep 09 2020 at 16:06

Faktorkan , 62 byte

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

Cobalah secara online!

BlackPanther Sep 09 2020 at 18:08

C # (Visual C # Interactive Compiler) , 81 byte

(s)=>{var bs = ASCIIEncoding.ASCII.GetBytes(s);return bs.All(b=>b%s.Length==0);};

Cobalah secara online!

C # (Visual C # Interactive Compiler) , 27 26 byte

s=>s.All(c=>c%s.Length<1);

Cobalah secara online!