String yang bisa dibagi
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
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 satu0, 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
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
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!
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
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)
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
JavaScript, 32 byte
Ouput dibalik.
s=>Buffer(s).some(c=>c%s.length)
Cobalah secara online!
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
Python 2 , 41 39 byte
lambda s:all(ord(i)%len(s)<1for i in s)
Cobalah secara online!
-2 byte berkat @ovs
K (oK) , 11 byte
{~+/(#x)!x}
Cobalah secara online!
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.
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)
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!
Perl 5 -pF , 20 byte
$_=!grep ord()%@F,@F
Cobalah secara online!
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)
Bahasa Wolfram (Mathematica) , 40 byte
{0}==##&@@ToCharacterCode@#~Mod~Tr[1^#]&
Cobalah secara online!
terima kasih kepada @att karena telah menghemat beberapa byte
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
C # (.NET Core) , 25 byte
a=>a.All(x=>x%a.Length<1)
Cobalah secara online!
Japt -e , 6 byte
c vNÎÊ
Cobalah
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)
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
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 ...
Clojure, 41 karakter
(every? #(= 0 (mod (int %) (count x))) x)
Menghapus spasi setelah komentar 37 karakter
(every? #(= 0(mod(int %)(count x)))x)
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
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
Python 3 , 55 52 byte
N=input();print(not sum([ord(i)%len(N) for i in N]))
Cobalah secara online!
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
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.
Faktorkan , 62 byte
: f ( s -- ? ) dup length [ mod ] curry [ + ] map-reduce 0 = ;
Cobalah secara online!
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!