Chuỗi chia
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
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ột0, đó 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
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
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!
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
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)
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
JavaScript, 32 byte
Ouput bị đảo ngược.
s=>Buffer(s).some(c=>c%s.length)
Hãy thử nó trực tuyến!
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
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
K (oK) , 11 byte
{~+/(#x)!x}
Hãy thử nó trực tuyến!
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.
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)
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!
Perl 5 -pF , 20 byte
$_=!grep ord()%@F,@F
Hãy thử nó trực tuyến!
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)
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
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ã
C # (.NET Core) , 25 byte
a=>a.All(x=>x%a.Length<1)
Hãy thử nó trực tuyến!
Japt -e , 6 byte
c vNÎÊ
Thử nó
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)
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
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 ...
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)
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
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
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!
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
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.
Hệ số , 62 byte
: f ( s -- ? ) dup length [ mod ] curry [ + ] map-reduce 0 = ;
Hãy thử nó trực tuyến!
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!