Octave, 53 52 bayt
Tam bir yeniden yazma yapmak bana kodu 5 byte'lık golf attı, ancak daha fazla no-op eklemek zorunda kaldım, sadece 1 byte'lık net tasarruf sağladım.
@(_)~diff(sum(de2bi(+_)))%RRPPPVVVW?????????________
Bir TIO bağlantısı ekleyemiyorum, çünkü çevrimiçi tercümanların hiçbiri için gerekli olan iletişim araç kutusunu uygulamadı de2bi
. Bunun dec2bin
yerine değiştirmek 4 bayta mal olur (çalışma kodu için 2 ve iki işlem dışı).
27 operasyondan hiçbirinden kaçınmanın bir yolunu bulamadım. Tüm fonksiyon isimleri ve parantezler 64'ün altında ya da 96'dan büyüktür, yani tüm "gerekli" karakterlerin 6. sırada bir 1'i vardır (sağdan 2 ^ 5). Sadece 23 tane ameliyat dışı olan bir çözüm buldum ama kodun kendisi daha uzundu. Gerçek kod 25 bayttır ve ikili eşdeğerin bitlerini sayarken aşağıdaki sütun toplamına sahiptir:
15 22 6 15 10 9 13
Sağda 6. sırada 22 bit (2 ^ 5) ve sağda 4. konumda sadece 6 bit (2 ^ 3) vardır. Bunun anlamı, 6'dan 22'ye kadar elde etmek için en az 16 bayt eklemek zorundayız . Şimdi, yorum karakteri %
6. konuma biraz ekleyerek 23'e yükseltir. Tüm yazdırılabilir ASCII karakterlerinin ikisinden en az birine ihtiyacı vardır. olmak için en iyi bit 1
. Bu nedenle, 17 bayt eklemek iki "en iyi nokta" nın her birinde en az 27 bit (2 ^ 6 ve 2 ^ 5) verecektir. Şimdi, ilk iki sırada 27, diğerlerinde 22 tane var. Bir dengeye ulaşmak için, her pozisyonda 32 bite eşit olmak için 10 bayt eklemek zorundayız.
Yeni kodun açıklaması (52 bayt):
@(_)~diff(sum(de2bi(+_)))
@(_) % An anonymous function that take a variable _ as input
% We use underscore, instead of a character, since it has the
% most suitable binary represetation
de2bi(+_) % Convert the input string to a binary matrix
sum(de2bi(+_)) % Take the sum of each column
diff(sum(de2bi(+_))) % And calculate the difference between each sum
~diff(sum(de2bi(+_))) % Negate the result, meaning 0 becomes true,
% and everything else becomes false
Yalnızca 1'ler içeren bir gerçek (gerçek) Octave dilinde true olarak değerlendirilir ve en az bir sıfır içeren bir vektör Octave dilinde false olarak değerlendirilir.
Eski kodun açıklaması (53 bayt):
@(_)!((_=sum(de2bi(+_)))-_(1))%RRRFVVVVVVVVV_____????
@(_) % An anonymous function that take a variable _ as input
% We use underscore, instead of a character, since it has the
% most suitable binary represetation
! % Negate the result, meaning 0 becomes true, and everything else becomes false
de2bi(+_) % Convert the input string to a binary matrix
sum(de2bi(+_)) % Take the sum of each column
(_=sum(de2bi(+_))) % Assign the result to a new variable, also called _
% It's not a problem that we use the same variable name, due
% to the order of evaluation
((_=sum(de2bi(+_)))-_(1)) % Subtract the first element of the new variable _
% If all elements of the new variable _ are identical, then this
% should give us a vector containing only zeros,
% otherwise, at least one element should be non-zero
!((_=sum(de2bi(+_)))-_(1)) % And finally, we negate this.
Yalnızca 1'ler içeren bir gerçek (gerçek) Octave dilinde true olarak değerlendirilir ve en az bir sıfır içeren bir vektör Octave dilinde false olarak değerlendirilir.