প্রোগ্রাম যা নিজেকে একটি স্ট্রিং এনকোড করার অনুমতি দেয় (কুইন-ভেরিয়েন্ট)


16

একটি প্রোগ্রাম লিখুন যা নিম্নলিখিত 80-অক্ষরের লাইনটি মুদ্রণ করে:

কোডগল্ফ.স্ট্যাকেক্সচেঞ্জ.কমের এই প্রোগ্রামটি একটি স্ট্রিংকে এনকোড করার অনুমতি দেয়।

তারপরে একটি ইনপুট একটি লাইন গ্রহণ করে, তার কোড পয়েন্টগুলি সম্ভবত পুনঃক্রম করা ( তার সাথে কোনও যোগ করা হয়নি এবং মুছে ফেলা হয়নি) সহ এর উত্স কোডটি মুদ্রণ করে । যখন কোডটি কার্যকর করা হয়, একই ঘটনাটি ঘটে থাকে, মুদ্রিত লাইনটি ব্যতীত ইনপুটটির সাম্প্রতিকতম লাইন হবে।

পার্ল-স্টাইলের রেজেক্স ^[A-Za-z0-9. ]{80}$ইনপুটগুলির যে কোনও লাইনের সাথে মিলবে। আপনি কোনও অতিরিক্ত অনুমান করতে পারবেন না।

একটি জমা দেওয়ার স্কোর হল এর উত্স কোডটিতে কোড পয়েন্টের সংখ্যা কম 94 । স্বল্পতা ভালো.

কোডটিতে অবশ্যই এমন কিছু করা উচিত নয় যা একটি কুইনে অগ্রহণযোগ্য হবে ( যেমন ফাইল পড়া)। বিশেষত, negativeণাত্মক স্কোর সহ যে কোনও জমা দেওয়ার জন্য অবশ্যই কোনওভাবে প্রতারণা করা উচিত, 93 হিসাবে! কম 64 80

যোগ করা 2014-04-21: আপনার প্রোগ্রামের পুরো উত্স কোডটি অবশ্যই কোড পয়েন্ট গণনা করে এমন অক্ষর এনকোডিংয়ে অবশ্যই সু-গঠন করতে হবে। উদাহরণস্বরূপ, আপনি ইউটিএফ -8 ট্রেলিং বাইট পরিসীমা (80..BF) এ টানা 80 বাইট ব্যবহার করতে পারবেন না এবং প্রতিটিকে একক ইউ + এফএফএফডি রিপ্লেসমেন্ট চরিত্র হিসাবে গণনা করতে পারেন (বা আরও খারাপ, কোনও কোড পয়েন্ট হিসাবে নয়)।

তদ্ব্যতীত, যদি এনকোডিং একাধিক উপায়ে কোড পয়েন্টকে এনকোড করার অনুমতি দেয় ( যেমন এসসিএসইউ ), আপনার প্রোগ্রামের পাশাপাশি সমস্ত প্রোগ্রাম যা প্রত্যক্ষ বা অপ্রত্যক্ষভাবে উত্পন্ন করে, কেবল তার মধ্যে একটি ব্যবহার করতে হবে (বা কমপক্ষে সমস্ত কোডের সাথে সমানভাবে আচরণ করা আবশ্যক )।


আপনার প্রশ্নটি পড়ার পরে, আমি নিশ্চিত নই যে আমার উত্তরটি আপনার মনে যেভাবে ছিল তা ঠিক করে কিনা। প্রোগ্রামটিতে নতুন স্ট্রিংটি পাইপ করা কি ঠিক আছে বা এর একটি ইন্টারেক্টিভ প্রম্পট চালু করতে হবে?
ডেনিস

@ ডেনিস: সে কারণেই আপনার উত্তর গ্রহণযোগ্য নয়। বরং "এই প্রোগ্রামটি [...]" মুদ্রণের আগে ইনপুটটি পড়ে reads
প্লিজ স্ট্যান্ড

এটাই আমি বোঝাতে চাইছিলাম, আমি এটি ভালভাবে প্রকাশ করি নি। গল্ফস্ক্রিপ্ট ইন্টারপ্রেটার স্ক্রিপ্টটি কার্যকর করা শুরু করার আগে এটিতে পাইপ করা সমস্ত কিছু পড়ে। এটি এড়ানোর একমাত্র উপায় হ'ল একটি প্রম্পট চালু করা, যা পাইপিংকে অসম্ভব করে তোলে।
ডেনিস

হাই, আমি জাভাস্ক্রিপ্ট এ চেষ্টা করছি। <script> ট্যাগের মধ্যে লেখাটি না পড়েই কুইন তৈরি করা অসম্ভব বলে মনে হচ্ছে? উত্স কোড অনুমতি দেওয়ার উদ্দেশ্য কী? আপনি বলেছিলেন 'সম্ভবত পুনরায় সাজানো'; এর অর্থ কি প্রয়োজন হলে কেবল অনুমতি দেওয়া?
ব্যাচুসবিলে

উত্তর:


5

গল্ফস্ক্রিপ্ট, 231 162 131

'1àâ4ÿaVo5GùpZBtiXOürsóNîMmWåKHc09JdñúêyzíECäYïhDU ãáIFõ6é8òRìjTv23ønuðLwxfSkôbëAelqý.çèPQ
öûg7'{0@.$[{}/]:&\{@2$,*2$2$?+@@^}/{;65base}:b~{&=}%''+puts'"#{`head -1`}"'~{&?}%)b[94,{)1$1$%@@/}/;]-1%&\[{1$=.@^}/]"'".@+\+\'.~'}.~

কিভাবে এটা কাজ করে

আমরা 94 টি আলাদা অক্ষর বেছে নিয়ে শুরু করি যা কোনও স্ট্রিংকে এনকোড করার অনুমতি দেয়। যে কোনও 94 টি চরিত্র কাজ করবে তবে আমরা গল্ফিংয়ের উদ্দেশ্যে নিম্নলিখিতটি বেছে নিই:

\n .0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
àáâãäåçèéêëìíîïðñòóôõöøùúûüýÿ

আসুন এই অক্ষরের অ্যারে কল করুন “&”।

ইনপুট লাইনে সর্বদা 81 টি অক্ষর থাকবে (এলএফ সহ)। এই সমস্ত চরিত্রের সমস্ত "&" এর প্রথম 65 টি অক্ষরে উপস্থিত রয়েছে। এটি উপরের 128 বাইটে অক্ষর চয়ন করার একমাত্র কারণ।

আমরা স্ট্রিংয়ের প্রতিটি অক্ষরকে এর সূচকে "&" তে প্রতিস্থাপন করি, সুতরাং এলএফ 0 হয়, স্থান 1 হয়, ইত্যাদি।

আমরা 81 প্রাপ্ত সংখ্যার একক বেস 65 সংখ্যার সংখ্যা বিবেচনা করি। এই নাম্বারে কল করুন “এন”।

এখন, আমরা “&” এর সমস্ত সম্ভাব্য ক্রমশক্তি গণনা করি এবং উপরের সংখ্যার সাথে সম্পর্কিত ক্রমূত্রটি পুনরুদ্ধার করি। এটি নিম্নলিখিত পদ্ধতিতে অর্জিত হয়:

  1. সেট c = 1এবং A = []
  2. শুরুতে যোগ N % cকরার A
  3. সেট N = N / cএবং c = c + 1
  4. যদি c < 95, 2 এ ফিরে যান।
  5. সেট i = 0এবং s = ""
  6. চার্টারটি পুনরুদ্ধার করুন &[A[i]], এটি "গুলি" এ যুক্ত করুন এবং এটি "&" থেকে সরান।
  7. সেট i = i + 1
  8. যদি i < 946 এ ফিরে যান।

মনে করুন আমাদের কাছে "E" এবং "D" কোড ব্লক রয়েছে যা উপরে বর্ণিত স্ট্রিংকে এনকোড এবং ডিকোড করে।

এখন, আমাদের সেই কোড ব্লকের জন্য একটি মোড়কের দরকার যা প্রশ্নের প্রয়োজনীয়তার সাথে সম্মতি দেয়:

'encoded string'{\.$[{}/]:&; D puts '"#{`head -1`}"'~ E "'".@+\+\'.~'}.~

এটি নিম্নলিখিতগুলি করে:

  • {…}.~একটি ব্লক সংজ্ঞায়িত করে, এটি সদৃশ করে এবং দ্বিতীয় অনুলিপি কার্যকর করে। প্রথম অনুলিপি স্ট্যাকের মধ্যে থাকবে।

  • \.$ এনকোডযুক্ত স্ট্রিংটিকে ব্লকের সাথে অদলবদল করে এবং সাজানো অক্ষর সহ এনকোডযুক্ত স্ট্রিংয়ের একটি অনুলিপি তৈরি করে।

  • [{}/]:&; উপরের স্ট্রিংটিকে একটি অ্যারেতে রূপান্তরিত করে, এটি "&" এ সংরক্ষণ করে এবং তা ত্যাগ করে।

  • D puts এনকোডযুক্ত স্ট্রিংটি ডিকোড করে ফলাফল মুদ্রণ করে।

  • '"#{`head -1`}"'~head -1শেল এক্সিকিউট করে একটি লাইন ইনপুট পড়ে ।

  • E "'".@+\+ স্ট্রিংটি এনকোড করে এবং একক উদ্ধৃতি সংযোজন এবং সংযোজন করে।

  • \'.~'এনকোডড স্ট্রিং এবং ব্লকটি অদলবদল করে এবং স্ট্রিং সংযোজন করে '.~'

  • ব্লকটি কার্যকর হওয়ার পরে, গল্ফস্ক্রিপ্ট স্ট্যাকের সামগ্রী (এনকোডড স্ট্রিং, ব্লক '.~') এবং প্রস্থানগুলি প্রিন্ট করে ।

"ই" নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা যেতে পারে:

{&?}%        # Replace each character by its index in “&”.
);           # Remove the last integer from the array, since it corresponds to the LF.
65base       # Convert the array to an integer “N” by considering it a base 65 number.
[            #
  94,        # For each integer “c” in 0 … 93:
  {          #
    )        # Increment “c”.
    1$1$%    # Push “N % c”.
    @@/      # Rotate “N % c” below “N” and “c” and divide the first by the latter.
  }/;        # Discard “N”.
]            # Collect the results of “N % c” in an array “A”.
-1%          # Reverse “A”.
&\           # Push “&” and swap it with “A”.
[            #
  {          # For each “j” in “A”:
    1$=.[]+  # Push “&[j] [&[j]]”.
    @^       # Rotate “&” on top of “[&[j]]” and take their symmetric difference.
  }/         #
]            # Collect the charcters into an array.

"ডি" নীচে হিসাবে সংজ্ঞায়িত করা যেতে পারে:

0&           # Push 0 (initial value of the accumulator “A”) and “&”.
@            # Rotate the encoded string on top of “&”.
{            # For each character “c” of the encoded string:
    @2$,*    # Rotate “A” on top of the stack and multiply it by the length of “&”.
    2$2$?+   # Get the index of “c” in “&” and add it to “A”.
    @@^      # Rotate “A” below “&” and “c” and take their symmetric difference.
}/;          # Discard “&”.
65base       # Convert “A” into the array of its digits in base 65.
{&=}%        # Replace each digit by the corresponding character in “&”.
''+          # Convert the resulting array into a string.

চূড়ান্ত গল্ফিং:

  • দুটি অক্ষর সংরক্ষণ করতে এর \.$[{}/]:&;0&@সাথে প্রতিস্থাপন করুন 0@.$[{}/]:&\

  • {;65base}:bএকটি অক্ষর সংরক্ষণ করতে ফাংশনটি সংজ্ঞায়িত করুন ।

  • স্ট্রিংয়ের পিছনে থাকা এলএফ এবং এলএফ ব্যতীত সমস্ত সাদা স্থান সরিয়ে ফেলুন।

উদাহরণ

$ # Create GolfScript file using base64 to avoid encoding issues.
$ base64 > permute.gs -d <<< JzHg4jT/YVZvNUf5cFpCdGlYT/xyc/NO7k1tV+VLSGMwOUpk8frqeXrtRUPkWe9oRFUg4+FJRvU26TjyUuxqVHYyM/hudfBMd3hmU2v0YutBZWxx/S7n6FBRCvb7ZzcnezBALiRbe30vXTomXHtAMiQsKjIkMiQ/K0BAXn0vezs2NWJhc2V9OmJ+eyY9fSUnJytwdXRzJyIje2BoZWFkIC0xYH0iJ357Jj99JSliWzk0LHspMSQxJCVAQC99LztdLTElJlxbezEkPS5AXn0vXSInIi5AK1wrXCcufid9Ln4K
$
$ # Set locale to en_US (or any other where one character is one byte).
$ LANG=en_US
$
$ # Go back and forth between two different strings.
$ # Second and sixth line are user input, not output from the script.
$
$ golfscript permute.gs | tee >(tail -n+2 > tmp.gs) && golfscript tmp.gs && rm tmp.gs
This program from codegolf.stackexchange.com permutes itself to encode a string.
Permuting source code code points to encode a string is a certain quine variant.
'18äJoS3sgV9qdçëxm0ÿKMNe5íPî.Htn2ciâIuøbRZéð4AwB7áìUüöôWõèûfñåLàóDrhQlO6
pTaýzòkùYCyFêïãG júEvX'{0@.$[{}/]:&\{@2$,*2$2$?+@@^}/{;65base}:b~{&=}%''+puts'"#{`head -1`}"'~{&?}%)b[94,{)1$1$%@@/}/;]-1%&\[{1$=.@^}/]"'".@+\+\'.~'}.~
Permuting source code code points to encode a string is a certain quine variant.
This program from codegolf.stackexchange.com permutes itself to encode a string.
'1àâ4ÿaVo5GùpZBtiXOürsóNîMmWåKHc09JdñúêyzíECäYïhDU ãáIFõ6é8òRìjTv23ønuðLwxfSkôbëAelqý.çèPQ
öûg7'{0@.$[{}/]:&\{@2$,*2$2$?+@@^}/{;65base}:b~{&=}%''+puts'"#{`head -1`}"'~{&?}%)b[94,{)1$1$%@@/}/;]-1%&\[{1$=.@^}/]"'".@+\+\'.~'}.~
$
$ # Sort all characters from the original source code and hash them.
$ fold -1 permute.gs | sort | md5sum
b5d978c81df5354fcda8662cf89a9784  -
$
$ # Sort all characters from the second output (modified source code) and hash them.
$ golfscript permute.gs | tail -n+2 | fold -1 | sort | md5sum
Permuting source code code points to encode a string is a certain quine variant.
b5d978c81df5354fcda8662cf89a9784  -
$
$ # The hashes match, so the characters of the modified source code are a permutation
$ # of the character of the original one.

224 বিয়োগ 94 হল 130.
mbomb007

আপনি বিস্তারিত বলতে পারেন?
ডেনিস

1

পার্ল, 1428 1099

এটিতে 1193 ASCII অক্ষর রয়েছে (960 অনুমোদিত বাইনারি অঙ্ক সহ) 1193 - 94 = 1099

$s='010011100001100010101100111111101001101011101000100000101011011010100110111111011111101011101000100110111111011100101000011101011110100000101000100101011111111110101100101101011010011100100100011110110001011100100001011010100111100000011110111110011100101000100110111111101001011110101011100110101110101101011110101100111111100010101101101100011110100101011111111111101101101000111111011110100111011100101000011101011110111111011010111111101100101101101011100010100111100000111110';$_=q{$i=join'',A..Z,a..z,0..9,'. ';print map({substr$i,oct'0b'.$_,1}$s=~/.{6}/g),$/;chop($s=<>);$s=join'',map{sprintf"%06b",index$i,$_}$s=~/./g;$t=join'',map{$_ x(480-(()=$s=~/$_/g))}0,1;print"\$s='$s';\$_=q{$_};eval#$t"};eval#000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

আমার প্রথম নকশা

বাইনারিতে স্যুইচ করার জন্য ডেনিসের কাছ থেকে পরামর্শ নেওয়ার আগে, আমার প্রোগ্রামটি অষ্টাল অঙ্কগুলিকে অনুমতি দিয়েছে।

আমার প্রথম ডিজাইনটি প্রতিটি স্ট্রিংকে প্রতিটি অক্ষরে 2 টি সংখ্যার সাথে 160 অষ্টাল অঙ্কগুলিতে এনকোড করে। এই এনকোডিংটিতে 100 8 = 64 টি আলাদা অক্ষর রয়েছে। অষ্টাল সিস্টেমে 8 টি আলাদা অঙ্ক রয়েছে। প্রোগ্রামটিতে অবশ্যই প্রতিটি অঙ্কের 160 কপি থাকতে হবে, সুতরাং এটি 8 × 160 = 1280 অঙ্কের অনুমতি দেয়।

আমি 160 টি সংখ্যা $sএবং অন্যান্য 1120 সংখ্যা রাখি $t। আমি এমন একটি প্রোগ্রাম দিয়ে শুরু করি যা কুইন নয়, তবে কেবল পরবর্তী রান $sএবং তার $tজন্য অ্যাসাইনমেন্টগুলি মুদ্রণ করে । এই হল:

$s = '2341425477515350405332467737535046773450353640504537765455323444366134413247403676345046775136534656553654774255543645377755507736473450353677327754555342474076';
$t = '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777';

# $i = character map of 64 characters, such that:
#  substr($i, $_, 1) is the character at index $_
#  index($i, $_) is the index of character $_
$i = join '', 'A'..'Z', 'a'..'z', '0'..'9', '. ';

# Decode $s from octal, print.
#  1. ($s =~ /../g) splits $s into a list of pairs of octal digits.
#  2. map() takes each $_ from this list.
#  3. oct() converts $_ from an octal string to a number.
#  4. substr() on $i converts number to character.
#  5. print() outputs the characters from map() and a final "\n".
print map({ substr $i, oct, 1 } $s =~ /../g), "\n";

# Read new $s, encode to octal.
#  1. ($s = <>) reads a line.
#  2. chop($s) removes the last character of $s, the "\n".
#  3. ($s =~ /./g) splits $s into characters.
#  4. map() encodes each character $_ as a pair of octal digits.
#  5. join() concatenates the pairs from map().
chop($s = <>);
$s = join '', map { sprintf "%02o", index $i, $_ } $s =~ /./g;

# Make new $t.
#  1. map() takes each $_ from 0 to 7.
#  2. $_ x (160 - (() = $s =~ /$_/g)) makes a string where $_ repeats
#     160 times, minus the number of times that $_ appears in $s.
#  3. join() concatentates the strings from map().
$t = join '', map { $_ x (160 - (() = $s =~ /$_/g)) } 0..7;

# Print the new assignments for $s and $t.  This is not yet a quine,
# because it does not print the rest of the program.
print "\$s = '$s';\n\$t = '$t';\n";

(() = $s =~ /$_/g))ভেরিয়েবলের খালি তালিকার একটি অ্যাসাইনমেন্ট। আমি এই কৌশলটি পার্লমঙ্কস-এর প্রসঙ্গ টিউটোরিয়াল থেকে নিই । এটি ম্যাচ অপারেটরের তালিকার প্রসঙ্গটি জোর করে =~। স্কেলারের প্রসঙ্গে ম্যাচটি সত্য বা মিথ্যা হবে $i++ while ($s =~ /$_/g)এবং ম্যাচগুলি গণনা করতে আমার একটি লুপ দরকার । তালিকার প্রসঙ্গে $s =~ /$_/gম্যাচের একটি তালিকা। আমি এই তালিকাটি একটি বিয়োগের স্কেলার প্রসঙ্গে রেখেছি, তাই পার্ল তালিকার উপাদানগুলি গণনা করে।

একটি কুইন তৈরি করতে, আমি পার্স কুইন্স$_=q{print"\$_=q{$_};eval"};eval থেকে রোসটা কোডে ফর্মটি নিই । এটি একটিতে একটি স্ট্রিং বরাদ্দ করে এবং তারপরে কল করে , তাই আমি আমার কোডটি স্ট্রিংয়ে রাখতে এবং এটি চালাতে পারি। আমার প্রোগ্রামটি quine যখন আমি গত লাইনে আমার তৃতীয় মোড়ানো হয়ে এবং , এবং আমার গত পরিবর্তন করতে ।q{...}$_eval$_=q{};evalprintprint "\$s = '$s';\n\$t = '$t';\n\$_=q{$_};eval"

পরিশেষে, আমি প্রথম কার্যভারটি $tএকটি মন্তব্যে পরিবর্তন করে এবং অতিরিক্ত অক্ষর মুছে ফেলে আমার প্রোগ্রামটি গল্ফ করি ।

এতে 1522 এএসসিআইআই অক্ষর রয়েছে (1280 অনুমোদিত অষ্টাল অঙ্ক সহ)
1522 - 94 = 1428

$s='2341425477515350405332467737535046773450353640504537765455323444366134413247403676345046775136534656553654774255543645377755507736473450353677327754555342474076';#0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666667777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
$_=q{$i=join'','A'..'Z','a'..'z','0'..'9','. ';print map({substr$i,oct,1}$s=~/../g),"\n";chop($s=<>);$s=join'',map{sprintf"%02o",index$i,$_}$s=~/./g;$t=join'',map{$_ x(160-(()=$s=~/$_/g))}0..7;print"\$s='$s';#$t\n\$_=q{$_};eval"};eval

বাইনারি স্যুইচ করুন

মন্তব্যে ডেনিস লক্ষ্য করেছেন যে 960 অনুমোদিত বাইনারি অঙ্কগুলি 1280 অষ্টাল অঙ্কের চেয়ে কম হবে। সুতরাং আমি প্রতিটি বেসের জন্য 2 থেকে 16 এর মধ্যে অনুমোদিত অঙ্কের সংখ্যা আঁকিয়েছি।

Maxima 5.29.1 http://maxima.sourceforge.net
using Lisp ECL 13.5.1
...
(%i36) n : floor(x);
(%o36)                             floor(x)
...
(%i41) plot2d(n * ceiling(log(64) / log(n)) * 80, [x, 2, 16],
              [xlabel, "base"], [ylabel, "number of permuted digits"]);
(%o41) 

এক্স-অক্ষের ভিত্তিতে গ্রাফ, y- অক্ষের উপর অনুমোদিত অঙ্কের সংখ্যা

যদিও বেস 8 স্থানীয় নূন্যতম, বেসগুলি 2 এবং 3 এবং 4 টি সেরা বেসের জন্য 960 অনুমোদিত অঙ্কে। কোড গল্ফের জন্য, বেস 2 সেরা কারণ পার্লের বেস 2 এর জন্য রূপান্তর রয়েছে।

980 বাইনারি অঙ্কের সাথে 1280 অষ্টাল অঙ্কগুলি প্রতিস্থাপন করা 320 টি অক্ষর সংরক্ষণ করে।

অষ্টাল থেকে বাইনারি কোড পরিবর্তন করে 8 টি অক্ষর:

  • পরিবর্তন octকরার জন্য oct'0b'.$_খরচ 7।
  • পরিবর্তন /../gকরার জন্য /.{6}/gখরচ 2।
  • "%02o""% 06 বি" তে পরিবর্তন করুন `খরচ 0।
  • পরিবর্তন 160করার জন্য 480খরচ 0।
  • পরিবর্তন 0..7করার জন্য 0,11 পরিমাণ সঞ্চয় হয়।

আমি কিছু পার্ল গল্ফ টিপস শিখেছি । তারা 14 টি অক্ষর সংরক্ষণ করে:

  • খালি শব্দ এবং খালি সংখ্যা ব্যবহার করে এতে পরিবর্তন 'A'..'Z','a'..'z','0'..'9'করুন A..Z,a..z,0..9, 12 টি অক্ষর সংরক্ষণ করুন।
  • পরিবর্তন "\n"করার জন্য $/2 অক্ষর পরিমাণ সঞ্চয় হয়।

আমি #$tমন্তব্যটি ফাইলের শেষে সরিয়ে 3 অক্ষর সংরক্ষণ করি । এটি মন্তব্যটিকে শেষ করা নিউলাইন এবং \nকুইনে আক্ষরিক remove

এই পরিবর্তনগুলি মোট 329 টি অক্ষর সংরক্ষণ করে এবং আমার স্কোর 1428 থেকে 1099 এ হ্রাস করে।


1
অষ্টাল অঙ্কগুলির পরিবর্তে বাইনারি ব্যবহারের জন্য "কেবল" 960 প্রবেশযোগ্য অক্ষর প্রয়োজন require
ডেনিস

@ ডেনিস টিপসের জন্য ধন্যবাদ! আমি বাইনারি (312 টি অক্ষর সংরক্ষণ করা) এ স্যুইচ করেছি। এখানে থাকাকালীন আমি আরও 17 টি চরিত্র ছড়িয়ে দিয়েছি ed
kernigh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.