Chuỗi chia

Sep 09 2020

Bài tập

Cho một chuỗi s, xuất ra giá trị true nếu mã ASCII của mỗi chữ cái chia hết cho độ dài của svà ngược lại là falsey.

Đầu ra đầu vào

Đầu vào là một chuỗi trống chỉ chứa ASCII [32-126]. Đầu ra là giá trị true / falsey tiêu chuẩn. Lưu ý rằng bạn có thể chuyển đổi các giá trị, ví dụ: trả về 0/ Falsenếu có thể chia và ngược lại

Các trường hợp thử nghiệm

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

Trả lời

3 LuisMendo Sep 09 2020 at 15:18

MATL , 4 byte

tn\~
  • Đối với các chuỗi có thể chia hết, đầu ra là một vectơ chỉ chứa 1s, là giá trị trung thực .
  • Nếu đầu ra là một vector chứa vài 1s và ít nhất một 0, đó là falsy .

Hãy thử nó trực tuyến! Hoặc xác minh tất cả các trường hợp thử nghiệm bao gồm cả thử nghiệm trung thực / giả mạo.

Làm thế nào nó hoạt động

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

Đầu ra là thông qua mã thoát, 1đối 0với trường hợp trung thực , đối với trường hợp sai.

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

Hãy thử nó trực tuyến!


Mã chạy với đầu vào lolvà ab:

số nhỏ đại diện cho giá trị byte theo nghĩa đen

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

Ít hơn 3 byte nhờ ovs và xnor!

Hãy thử nó trực tuyến!

7 ovs Sep 09 2020 at 15:06

05AB1E , 5 byte

ÇsgÖP

Hãy thử nó trực tuyến!

Đã nhận xét

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

Chà, điều này thật vui. Rockstar không có cách nào để đọc độ dài của một chuỗi trực tiếp, không thể chuyển đổi các ký tự thành điểm mã và không có toán tử mô-đun. Ngạc nhiên là nó hoạt động ngắn thế này!

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

Hãy thử nó ở đây (Mã sẽ cần được dán vào)

4 Mukundan314 Sep 09 2020 at 17:35

Pyth , 8 byte

!sm%CdlQ

Hãy thử nó trực tuyến!

!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 bị đảo ngược.

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

Hãy thử nó trực tuyến!

3 Kaddath Sep 10 2020 at 21:30

PHP , 56 52 byte

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

Hãy thử nó trực tuyến!

Đầu ra bị đảo ngược

Việc thực thi dừng fnếu có bất kỳ ký tự nào không chia được hoặc chuỗi rỗng (falsy trong PHP) nếu tất cả đều có thể chia được

CHỈNH SỬA: tiết kiệm 4 byte nhờ @ 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)

Hãy thử nó trực tuyến!

-2 byte nhờ @ovs

2 GalenIvanov Sep 09 2020 at 15:34

K (oK) , 11 byte

{~+/(#x)!x}

Hãy thử nó trực tuyến!

2 madlaina Sep 09 2020 at 16:48

Rust , 36 byte

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

Hãy thử nó trực tuyến!

Nhận đầu vào là a &[u8], đầu ra là a bool.

2 Razetime Sep 09 2020 at 17:13

Pip , 12 byte

!$+(A_Ma)%#a

Hãy thử nó trực tuyến!

Giải trình

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

nếu chỉ có thể sử dụng bản đồ trên chuỗi ..

-10 byte từ các noãn.

-1 byte từ Dingus.

Hãy thử nó trực tuyến!

2 NahuelFouilleul Sep 09 2020 at 21:05

Perl 5 -pF , 20 byte

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

Hãy thử nó trực tuyến!

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;}

Hãy thử nó trực tuyến!

Trả về falsey nếu giá trị ASCII của mỗi ký tự chia hết cho độ dài của chuỗi đầu vào hoặc true.

Giải trình:

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

Ngôn ngữ Wolfram (Mathematica) , 40 byte

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

Hãy thử nó trực tuyến!

cảm ơn @att vì đã tiết kiệm một số byte

1 Adám Sep 09 2020 at 15:24

APL (Dyalog Extended) , 7 byte ( SBCS )

Hàm tiền tố ngầm ẩn danh

⍱≢|⎕UCS

Hãy thử nó trực tuyến!

⍱ không phải giá trị nào sau đây đúng (khác 0)?

≢ độ dài

| chia (sáng. phần còn lại khi chia)

⎕UCS điểm mã

1 LiefdeWen Sep 09 2020 at 15:56

C # (.NET Core) , 25 byte

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

Hãy thử nó trực tuyến!

1 Shaggy Sep 09 2020 at 16:36

Japt -e , 6 byte

c vNÎÊ

Thử nó

1 KevinCruijssen Sep 09 2020 at 16:42

MathGolf , 4 byte

$h÷╓

Nhập dưới dạng danh sách các ký tự.

Hãy thử nó trực tuyến.

Giải trình:

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

Thạch , 4 byte

LḍOP

Hãy thử nó trực tuyến! hoặc Xác minh tất cả các trường hợp!

Đã nhận xét: (Ít nhất tôi nghĩ rằng nó hoạt động như thế này)

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

R , 39 38 byte

Chỉnh sửa: -1byte nhờ quy tắc mới mà chúng tôi có thể xuất ra TRUE cho FALSE và FALSE cho TRUE

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

Hãy thử nó trực tuyến!

Hoặc thử phiên bản 39 byte ban đầu xuất ra TRUE cho TRUE ...

1 Stuart Sep 11 2020 at 16:10

Clojure, 41 ký tự

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

Xóa khoảng trắng sau bình luận 37 ký tự

(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:

Thử nó!

Cảm ơn @Razetime vì đã tiết kiệm được 9 byte!

Giải trình:

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

Hãy thử nó trực tuyến!

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

Phiên bản thay thế,

⟨ạ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]))

Hãy thử nó trực tuyến!

1 2014MELO03 Sep 17 2020 at 03:26

GolfScript , 20 byte

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

Hãy thử nó trực tuyến!

Kết quả này xuất ra 1 nếu chuỗi có thể chia hết và 0 nếu không. Gọi S là chuỗi và L là độ dài của nó.

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

Than củi , 8 byte

¬⊙θ﹪℅ιLθ

Hãy thử nó trực tuyến! Liên kết là phiên bản dài của mã. Đầu ra là một boolean Charcoal, nghĩa là -true, không có gì cho false. Giải trình:

  θ         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θ tất nhiên cũng hoạt động.

GalenIvanov Sep 09 2020 at 16:06

Hệ số , 62 byte

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

Hãy thử nó trực tuyến!

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);};

Hãy thử nó trực tuyến!

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

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

Hãy thử nó trực tuyến!