ऑक्टेव, 53 52 बाइट्स
एक पूर्ण पुनर्लेखन करने से मुझे कोड 5 बाइट्स में मदद मिली, लेकिन मुझे अधिक नो-ऑप्स जोड़ना पड़ा, जिससे यह केवल 1 बाइट का शुद्ध-बचत हुआ।
@(_)~diff(sum(de2bi(+_)))%RRPPPVVVW?????????________
मैं एक TIO- लिंक नहीं जोड़ सकता, क्योंकि किसी भी ऑनलाइन दुभाषिए ने संचार टूलबॉक्स को लागू नहीं किया है de2bi
। dec2bin
इसके बजाय इसे बदलने पर 4 बाइट्स (काम करने वाले कोड के लिए 2, और दो नो-ऑप्स) खर्च होंगे।
मुझे 27 नो-ऑप्स में से किसी से बचने का कोई रास्ता नहीं मिला। सभी फ़ंक्शन नाम और कोष्ठक 64 से नीचे या 96 से अधिक के बीच हैं, जिसका अर्थ है कि सभी "आवश्यक" वर्णों में 6 वें स्थान पर 1 है (दाईं ओर, 2 ^ 5)। मेरे पास केवल 23 नो-ऑप्स के साथ एक समाधान था, लेकिन कोड स्वयं लंबा था। वास्तविक कोड 25 बाइट्स है, और बाइनरी समतुल्य के बिट्स की गिनती करते समय निम्नलिखित कॉलम राशि है:
15 22 6 15 10 9 13
दाएं (2 ^ 5) से 6 वें स्थान पर 22 बिट्स हैं, और दाईं ओर (2: 3) से 4 वीं स्थिति में केवल 6 बिट्स हैं। इसका मतलब है, हमें कम से कम 16 बाइट्स जोड़ने हैं, 6 को 22 तक लाने के लिए। अब, टिप्पणी चरित्र %
6 वें स्थान पर थोड़ा जोड़ता है, इसे 23 तक बढ़ाता है। सभी मुद्रण योग्य ASCII- वर्णों को कम से कम दो में से एक की आवश्यकता होती है शीर्ष बिट्स होने के लिए 1
। इसलिए, 17 बाइट्स जोड़ने से हमें दो "शीर्ष स्थानों" (2 ^ 6 और 2 ^ 5) में से प्रत्येक में कम से कम 27 बिट्स मिलेंगे। अब, हमारे पास शीर्ष दो स्थानों में 27 बिट हैं, और बाकी में 22 हैं। एक संतुलन प्राप्त करने के लिए, हमें प्रत्येक स्थिति में 32 बिट्स तक पहुंचने के लिए, 10 बाइट्स जोड़ना होगा।
नए कोड की एक व्याख्या (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
केवल 1s (true) वाले वेक्टर का मूल्यांकन ऑक्टेव में सच करने के लिए किया जाता है, और ऑक्टेव में असत्य के लिए कम से कम एक शून्य वाले वेक्टर का मूल्यांकन किया जाता है।
पुराने कोड की व्याख्या (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.
केवल 1s (true) वाले वेक्टर का मूल्यांकन ऑक्टेव में सच करने के लिए किया जाता है, और ऑक्टेव में असत्य के लिए कम से कम एक शून्य वाले वेक्टर का मूल्यांकन किया जाता है।