রুবি, 158 154 146 128 122 100 বাইট
এই উত্তর দ্বারা অনুপ্রাণিত ।
eval s=%{$><<(D>198?'BREAKING NEWS: WORLD ENDS':'eval s=%%{%s}<<D=%d'%[s[0..-2],D<2?100:D+1])#}<<D=1
সম্পাদনা: আমি এটিকে অপসারণ করতে (s.split(35.chr)[0]+35.chr).inspect
এবং প্রতিস্থাপন করতে সক্ষম হয়েছি s[0..-2]
(শেষ ব্যতীত প্রতিটি মানের সীমা) এবং %{ ... }
আমি আগে ব্যবহার করেছি স্ট্রিং সিনট্যাক্সটি। 22 বাইট সংরক্ষিত!
পুরাতন রুপ:
সম্পাদনা: "BREAKING NEWS: WORLD ENDS"
একদম সঠিক বৈধ বিন্যাসের স্ট্রিং বুঝতে পেরে এক জোড়া পেরেন (এবং ডেটা বিভাগে সংশ্লিষ্ট জুটি) সংরক্ষণ করা হয়েছে এবং রুবি কোনও এক্সট্রিনো পরামিতি উপেক্ষা করে।
END{$><<(q=S>198?"BREAKING NEWS: WORLD ENDS":%{END{$><<(q=S>198?"BREAKING NEWS: WORLD ENDS":%%{%s})%%[q,S<2?0:S-99]}
S=1%02d})%[q,S<2?0:S-99]}
S=1
যখন এই আমি উপলব্ধি যে যেহেতু শুরুর নম্বর হবে আছে প্রোগ্রাম খুব শেষে যেতে, এবং রুবি ভেরিয়েবল ব্যবহার করার আগে তারা ঘোষণা করা অনুমতি দেয় না, আমি কোড রান করতে হবে পরে ডিজিটের একরকম। আমি এমন কিছু করতে পারতাম def a(s) ... end;a 1
যা হয়ে উঠবে ...end;a 100
, তবে রুবির কম পরিচিত END
বাক্য ব্যবহার করে কম বাইট ব্যবহার করা হয়। যাইহোক, ব্লকটির অভ্যন্তরটি END
অন্যরকম স্কোপে রয়েছে, সুতরাং S
অবশ্যই একটি বৈশ্বিক পরিবর্তনশীল বা ধ্রুবক হতে হবে।
ব্যাখ্যা:
END{ ... };S=1
: প্রোগ্রাম শেষ হওয়ার ঠিক আগে কোডের ব্লক চালান; সেট ধ্রুব S
করার 1
(অথবা 100
- 199
ভবিষ্যৎ পুনরাবৃত্তিও মধ্যে)
$><<( ... )
: $>
স্টাডাউটের রুবিতে একটি শর্টকাট, এবং <<
একটি আইওতে আইও-কে লেখা হয়। পেরেনগুলি প্রয়োজনীয়, অন্যথায় এটি হয়ে যায়($><<S)>198...
S>198?"BREAKING NEWS: WORLD ENDS":(q=...)%[q,S<2?0:S-99]
: আমি যদি এটিকে কিছুটা আরও যুক্তিসঙ্গত কোডে বিভক্ত করতাম তবে তা হ'ল:
if S > 198
"BREAKING NEWS: WORLD ENDS"
else
q = ...
number_to_append = if S < 2
0
else
S - 100 + 1
end
q % [q, number_to_append]
end
%
অপারেটর একটি স্ট্রিং প্রয়োগ কার্যকরভাবে হয় printf
LHS ফরম্যাট স্ট্রিং হচ্ছে ও RHS আর্গুমেন্ট হচ্ছে।
%{ ... (q=%%{%s}) ... S=1%02d}
: রুবিতে স্ট্রিংগুলির জন্য একটি আকর্ষণীয় বাক্য গঠন রয়েছে যা ভারসাম্যহীন যতক্ষণ না কোনও স্ট্রাইটিং ছাড়াই স্ট্রির মধ্যে জোড়া কোঁকড়ানো বন্ধনী উপস্থিত হতে দেয়। এটি খুব সহায়ক, অন্যথায় অনুরূপ কুইনটিকে স্ট্রিং আক্ষরিক হিসাবে নিজের মধ্যে রাখার জন্য স্ট্রিংটি এড়িয়ে যেতে হবে। বিন্যাস স্ট্রিংয়ের দুটি বিকল্পগুলি %s
নিয়মিত স্ট্রিংয়ের %02d
জন্য এবং অক্ষরের সাথে 2 আকারের ডান-প্যাডযুক্ত 0
।
আরও ছোট করার বিষয়ে আমার চিন্তাভাবনা:
এর s
পরিবর্তে ব্যবহার করতে সক্ষম $s
হওয়াই ভাল লাগবে তবে এর সংজ্ঞা দেওয়া s=$s;
বা একটি ফাংশন তৈরি করা def a(s) ...
উভয়ই সেভ করার চেয়ে বেশি বাইট ব্যবহার করে এবং এটি করার কোনও উপায় আমি ভাবতে পারি না। সম্পাদনা: ধ্রুবকগুলি বিশ্বব্যাপী এবং এটি একটি চরিত্র হতে পারে!
- ততক্ষণে যদি
S
কম থাকত তবে ভালো লাগবে 100
, যাতে এটি 3-সংখ্যার পরিবর্তে 2-সংখ্যার সংখ্যা ব্যবহার করে তুলনা করা যায়। যাইহোক, যদি আমি ব্যবহার S=0
শেষে, পরবর্তী দুটি সংখ্যা অকট্যাল হিসেবে ব্যাখ্যা করা হয়, এবং 8
এবং 9
অবৈধ এবং সব পালান হয়। S=
কেবল বৈধ নয়, এবং দুটি অঙ্ক সংযোজন করার আগে এবং পরে উভয়ই মানকে বৈধ করার কোনও উপায় আমি জানি না। নোট, এর 0
(এবং প্রত্যেক অন্যান্য পূর্ণসংখ্যা) হল truthy রুবি হবে।
কীভাবে এই খাটোটি করা যায় সে সম্পর্কে কোনও চিন্তাভাবনা, দয়া করে আমাকে জানান!
এটি অনলাইন চেষ্টা করুন!
2Kparanoia: yes97
এবং উত্পাদন করব2Kparanoia: yes98
, সুতরাং (4) পড়া উচিত নয়Repeat to step 100, but step 101 will output "BREAKING NEWS: WORLD ENDS"
? (অর্থাত্2Kparanoia: yes99
সংবাদটি উত্পন্ন করে)