オクターブ、53 52バイト
完全に書き直すことでコードを5バイトゴルフすることができましたが、何も操作を追加せずに、1バイトだけのネット保存になりました。
@(_)~diff(sum(de2bi(+_)))%RRPPPVVVW?????????________
TIOリンクを追加することはできません。なぜなら、オンライン通訳者は誰もが必要なコミュニケーションツールボックスを実装していないからde2bi
です。dec2bin
代わりにこれを変更すると、4バイトかかります(動作中のコード用に2つ、2つのノーオペレーション)。
27のノーオペレーションを回避する方法は見つかりませんでした。すべての関数名と括弧は64未満または96を超えています。つまり、すべての「必要な」文字は6番目の位置に1があります(右から2 ^ 5)。解決策は23個のノーオペレーションしかありませんでしたが、コード自体は長かったです。実際のコードは25バイトであり、同等のバイナリのビットを数えると、次の列の合計があります。
15 22 6 15 10 9 13
右から6番目の位置(2 ^ 5)には22ビットがあり、右から4番目の位置(2 ^ 3)には6ビットしかありません。つまり、6を最大22 にするには、少なくとも 16バイトを追加する必要があります。ここで、コメント文字%
は6番目の位置にビットを追加し、23に増やします。すべての印刷可能なASCII文字には、上位ビットになります1
。したがって、17バイトを追加すると、2つの「トップスポット」(2 ^ 6および2 ^ 5)のそれぞれに少なくとも27ビットが得られます。現在、上位2つのスポットに27ビット、残りに22ビットがあります。平衡に達するには、10バイトを追加して、各位置で偶数の32ビットにする必要があります。
新しいコードの説明(52バイト):
@(_)~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
1のみを含むベクトル(true)はOctaveでtrueと評価され、少なくとも1つのゼロを含むベクトルはOctaveでfalseと評価されます。
古いコードの説明(53バイト):
@(_)!((_=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.
1のみを含むベクトル(true)はOctaveでtrueと評価され、少なくとも 1つのゼロを含むベクトルはOctaveでfalseと評価されます。