মাইনক্রাফ্ট মিররড


51

এই ক্যালভিন । কেবলমাত্র 20 জন বিশিষ্ট হওয়ার চেষ্টা করছেন যাতে এই ব্যবহারকারীটি পিপিসিজি মাইনক্রাফ্ট সার্ভারের চ্যাটরুমে চ্যাট করতে পারে ।

একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইতিবাচক পূর্ণসংখ্যার মধ্যে নেয়।

পূর্ণসংখ্যা যদি সমান হয় (2, 4, 6, ...), এই সঠিক ASCII আর্ট স্ট্রিংটি মুদ্রণ করুন বা ফিরে দিন:

                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |

যদি পূর্ণসংখ্যাটি বিজোড় হয় (1, 3, 5, ...), এই সঠিক ASCII আর্ট স্ট্রিংটি মুদ্রণ করুন বা ফিরে দিন:

                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা ইতিবাচক পূর্ণসংখ্যার হয়।

উভয় আউটপুট ক্ষেত্রে lineচ্ছিকভাবে প্রতিটি লাইনের "টি" এর ডান প্রান্ত পর্যন্ত অনেকগুলি ট্রেলিং স্পেস এবং / অথবা একক ট্রেলিং নিউলাইন থাকতে পারে। প্রতিটি অক্ষরের মধ্যে স্পেসের দুটি কলাম কীভাবে রয়েছে তা লক্ষ্য করুন।

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


54
আমি নতুন ব্যবহারকারী যদি রেপ খুঁজছিলাম তবে আমি ক্যালভিনের
নামও ছাড়ব

13
@ জিওবিটস এটি আমি
ক্যালভিনের

52
@ জিওবিটস না, এটি আমি। আমি জানতাম যে আমি যদি এটির সত্যই আমাকে প্রকাশ করি তবে কেউ উজ্জীবিত হবে না।
অপ্টিমাইজার

19
কে এটি তৈরি করেছে তা বিবেচ্য কেন? প্রতিবেদনের পোস্টের বিষয়বস্তুর উপর ভিত্তি করে থাকা উচিত?
মার্শ

19
@ মার্স তত্ত্ব অনুসারে, হ্যাঁ। বাস্তবে মানুষ ত্রুটিযুক্ত। এটি চালানো একটি আকর্ষণীয় পরীক্ষা হতে হবে, উচ্চ-প্রতিনিধি ব্যবহারকারী সংবর্ধনার পার্থক্য নির্ধারণ করার জন্য কয়েকটি চ্যালেঞ্জ পোস্ট করার জন্য একটি নতুন অ্যাকাউন্ট তৈরি করে।
জিওবিটস

উত্তর:


23

জাভাস্ক্রিপ্ট (ES6), 343 336 289 267 265 260 বাইট

কেবল মজাদার জন্য ... :) (৪uf বাইট কেটে দেওয়ার জন্য এবং আমার নিজের থেকে আরও ৩ 37 টি কেটে দেওয়ার জন্য উত্সাহিত করার জন্য জুফক্সকে ধন্যবাদ Thanks)

n=>`887141${n%2?`
98/202/05/4|3/29 1 /2|5|
 92/92/30 / 0--2|5|--/492/3|--3|
29/29/40/2013912|1|59/4|12_|_`:`3185121_
2/92/9409205/405/94|5|
 /29/2930 9 0--2|5|--94/193|--3|
/892029013912|392/492|5|`}`.replace(/\d/g,x=>+x?x<2?'__':x<9?' '.repeat(x):'\\':'|  |')

হিসাবে a(4)বা অনুরূপ বলা হয় । এটি এখানে চেষ্টা করুন:

আমি থেকে ডিজিটের স্ট্রিং মধ্যে হোয়াইটস্পেস ঘনীভূত থাকেন 2করতে 8(যেমন 887= 23 শূণ্যস্থান)। প্রতিটি অঙ্ক তখন স্থানের সাথে সম্পর্কিত সংখ্যার সাথে প্রতিস্থাপিত হয়। 0প্রতিনিধিত্ব করে | |, এবং 1প্রতিনিধিত্ব করে __। সব মিলিয়ে এই প্রোগ্রামটি দুটি স্ট্রিং (203 + 227 = 430) এর চেয়ে 170 বাইট ছোট, তাই আমি খুশি happy :)

সম্পাদনা: একরকম, এই মুহুর্তে এটি কেবলমাত্র অন্যান্য প্রবেশের সমান দৈর্ঘ্য .... ও_ও o

সম্পাদনা 2: স্ট্রিংগুলিতে পরিবর্তন n%2<1?করে n%2?এবং অদলবদলের মাধ্যমে কিছু জায়গা রক্ষা করা হয়েছে । আরও দুটি বাইট হ্রাস করার জন্য দুটি স্ট্রিংয়ের সূচনা একইরকমের সুবিধাটিও নিয়েছিলেন।

3 সম্পাদনা করুন: |2| দেখে মনে হচ্ছে একটি ভয়ঙ্কর কিছু দেখা যাচ্ছে, তাই প্রতিটি ঘটনাকে x7 বাইট সাশ্রয় করে সরলীকৃত করেছেন । জুফক্সের পরামর্শগুলি আরও 40 বাইট কেটে দেয়।

4 সম্পাদনা করুন:\n মোট থেকে 6 বাইট অপসারণ করে প্রকৃত লাইন ব্রেকগুলির সাথে প্রতিস্থাপনের জন্য জুফক্সের পরামর্শ । পরিবর্তন xকরার জন্য 0এবং __করতে 1, (মন্দ হাসি এখানে ঢোকান) তাহলে (Regex এখান থেকে সন্নিবেশ বহুবচন) সব মিশ্রন, যেমন তিনি তার এন্ট্রি করেনি একটি অতিরিক্ত 16 বাইট সংরক্ষিত হয়েছে।

5 সম্পাদনা করুন: যেহেতু আমি ES6 মান ব্যবহার করা বেছে নিয়েছি, তাই 2 চূড়ান্ত বাইটগুলি শেভ করার জন্য আমি কাস্টম টেম্পলেট স্ট্রিং ইন্টারপোলেশন ব্যবহার করেছি।


1
এই সংখ্যাটির অবশ্যই কিছু থাকতে হবে! একটি নিখুঁত ঘনক্ষেত্র হওয়া ছাড়াও এটি :-) যেহেতু জাভাস্ক্রিপ্ট সম্পর্কে আমার কোনও ধারণা নেই সেহেতু আপনার উত্তরে ভোট দিতে পারবেন না ...
লুইস মেন্ডো

1
কীভাবে .replace(/\d/g,d=>' '.repeat(d))?
সেবাস্তিয়ান সাইমন

1
পছন্দ করুন এখন, আপনি আমার উত্তর মারতে পারেন? মাত্র 9 বাইট যেতে হবে…;) যাইহোক, আমি যখন আপনার বাইটগুলি গণনা করি তখন এটি 289 বলে, জিইডিট গণনা সরঞ্জামটি ব্যবহার করে…
সেবাস্তিয়ান সাইমন

1
সম্ভবত টেমপ্লেট স্ট্রিংগুলি ব্যবহার করে পরিবর্তে \nপ্রতি লাইনের বিরতিতে একটি বাইট সংরক্ষণের পরিবর্তে প্রকৃত লাইন বিরতি তৈরি করতে সক্ষম হবেন ?
সেবাস্তিয়ান সাইমন

1
এখন আমি আপনার চেয়ে 2 বাইট কম পেয়েছি। = পি
সেবাস্তিয়ান সাইমন

12

মতলব, 343 341

a=' -/\_|';
if mod(input(''),2)
x='003C00E00E000L0005N5000I000005550I0000I0055N4UVYO26R4004400400U005300UUXO060O060003C00C30CO00IO00UUUS060S5B54000';else
x='0I2000L0000L000E05H50C0000000555000C00C00H554UVYO26R4004400400U000250WUU006O006O0I2002I00O0I0O0C0UUU006S05BT0004';end
disp(a(reshape(dec2base(base2dec(reshape(x,[],7),36),6),4,[])-47))

স্ট্যান্ডিন থেকে ইনপুট নম্বর সরবরাহ করা হয়।

নমুনা রান:

>> a=' -/\_|';
if mod(input(''),2)
x='003C00E00E000L0005N5000I000005550I0000I0055N4UVYO26R4004400400U005300UUXO060O060003C00C30CO00IO00UUUS060S5B54000';else
x='0I2000L0000L000E05H50C0000000555000C00C00H554UVYO26R4004400400U000250WUU006O006O0I2002I00O0I0O0C0UUU006S05BT0004';end
disp(a(reshape(dec2base(base2dec(reshape(x,[],7),36),6),4,[])-47))
1
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     | 

1
এটাই স্রেফ পাগল লোল। +1 টি।
রায়রিং - মনিকা 22

1
@rayryeng হাঁ :-) দুঃখজনক যে মতলব শুধুমাত্র 36 পর্যন্ত বেস বৃহত্তর মান বেশ কিছু বাইট সংরক্ষিত যেত পারবেন
লুইস Mendo

1
@ লুইস মেন্ডো আমার জাভাস্ক্রিপ্ট সমাধান তৈরি করার সময় ঠিক কী ভেবেছিলেন…
সেবাস্তিয়ান সাইমন

@ এসফক্স জেএস-এ বিটিওএ () এবং অটোব () ফাংশনগুলি যথাক্রমে বেস 64 এবং এনকোড এবং ডিকোড।
তালি দাও

11

সিজেম, 158 149 145 138 বাইট

li2%"A+×rµ^ÅÆÿ»£ºoU#ü T^U^ÝZe<ÄÊKÞÒ£^ÛWWø5Úí§¹T^Úêer^^°^Ã}Ã^A0R2"281b7b"/
 -_\|"f=N/S3**_"_ ":T/TW%*4/zW%1m>N*1>"\/"_W%er"^W^]5OU"{i_32>T=t}/\4/zN*?

উপরের অংশটি ক্যারেট স্বরলিপি ব্যবহার করে, যেহেতু কোডটিতে ছাপিয়ে অক্ষর রয়েছে।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

যদি পারমালিঙ্ক আপনার ব্রাউজারে কাজ না করে, আপনি এই পেস্ট থেকে কোডটি অনুলিপি করতে পারেন ।

উদাহরণ রান

$ LANG=en_US
$ xxd -ps -r > minecraft.cjam <<< 6c69322522412bd772b585c6ffbba3ba6f5523fc2054159d5a653cc4ca4bded2a39b5757f835daeda7b9549aea65721eb0837dc30130523222323831623762222f0a202d5f5c7c22663d4e2f53332a2a5f225f20223a542f5457252a342f7a5725316d3e4e2a313e225c2f225f5725657222171d354f55227b695f33323e543d747d2f5c342f7a4e2a3f
$ cjam minecraft.cjam <<< 2; echo
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     | 
$ cjam minecraft.cjam <<< 1; echo
                       __    __                        
\        /  |  |  /|  |     /    |   /  \ __ /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

ধারণা

MINECRAFT স্ট্রিংটি (একটি ধ্রুবক রেখার দৈর্ঘ্য অর্জনের জন্য প্যাডড) সরাসরি এনকোড করার পরিবর্তে আমরা এর একটি "জিপড" সংস্করণটি এনকোড করব, যেখানে সারি এবং কলামগুলি স্থানান্তরিত হয়েছে।

লাইনফিডগুলি জিপ করা এবং অপসারণের পরে, এই স্ট্রিংটি (আসুন একে আর বলে দিন ) এনকোড করতে হবে:

   /  /  /   \    \   /  /   \    \    \         |||         ||| \    \    \ |||         |||_ -__ -_          |  / \_  __  _         |||_ - _ -  |\    \           /  /  /_  \_   \    \         |||_ - _ -         _   _|||_   

অনেকগুলি স্পেস রয়েছে, তাই আমরা স্পেস ট্রিপলিটের প্রতিটি ঘটনাকে একটি লাইনফিডের সাথে প্রতিস্থাপন করব।

এটি আমাদেরকে সাতটি পৃথক অক্ষর ( \n -/\_|) দেয়, সুতরাং আমরা তাদের প্রত্যেককে 0 থেকে 6 পর্যন্ত একটি সংখ্যা নির্ধারণ করি এবং একটি বেস 7 সংখ্যার ফলে প্রাপ্ত অ্যারে অঙ্কগুলি বিবেচনা করি, যা আমরা পরে বাইট স্ট্রিং হিসাবে এনকোড করি।

উপর থেকে পদক্ষেপগুলি বিপরীত করে ডিকোডিং কাজ করে।

মিররড স্ট্রিংটি মূলটি থেকে তৈরি করা যেতে পারে।

যদি আমরা চারটি সারিটির ক্রমটি বিপরীত করি এবং কঠিনগুলি অদলবদল করি তবে আমরা নিম্নলিখিতটি পাই:

\        /  |  |  /|  |__   /__  |   /  \    /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \__/   |--   | 
  \/  \/    |  |/  |  |     \    |  |     \/    |     | 
                       __    __   __             __  ___

কিছুটা অনুরূপ, তবে নীচের সারিটি শীর্ষে আনতে আমাদের স্পষ্টভাবে সারিগুলি ঘোরানো হবে:

                       __    __   __             __  ___
\        /  |  |  /|  |__   /__  |   /  \    /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \__/   |--   | 
  \/  \/    |  |/  |  |     \    |  |     \/    |     | 

এটি যদি সেই সমস্যাযুক্ত আন্ডারস্কোরগুলির জন্য না হত।

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

                         _     _                      _ 
\        /  |  |  /|  |_    /_   |   /  \ __ /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

অনেক ভাল! যে সমস্ত মধ্যে জিনিষের পাল্টাপাল্টি আন্ডারস্কোর চলন্ত, কি প্রথম প্রথম সারির স্থান (প্রথম সারিতে একটি অক্ষর বাঁদিকের সব আন্ডারস্কোর নাড়াচাড়া) মুছে ফেলার হয় বাকি এবং সি এক সারি আপ এবং উপর আন্ডারস্কোর খারিজ টি

কোড

li2%           e# Read an integer from STDIN and push its parity.

"A+×rµ^ÅÆÿ»£ºoU#ü T^U^ÝZe<ÄÊKÞÒ£^ÛWWø5Úí§¹T^Úêer^^°^Ã}Ã^A0R2"

281b7b         e# Convert the byte string from base 281 to base 7.
"/\n -_\\|"f=  e# Replace each digit by its corresponding character.
N/S3**         e# Turn linefeeds into three spaces.
_              e# Copy the resulting string.
"_ ":T         e# Define T.
/TW%*          e# Replace occurrences of T with T reversed.
4/z            e# Split into chunks of length 4 and zip.
W%1m>          e# Reverse and rotate the rows.
N*             e# Join the rows, separating by linefeeds.
1>             e# Discard the first character.
"\/"_W%er      e# Swap the soliduses.
"^W^]5OU"      e# Push the string that corresponds to [23 29 53 79 85].
{              e# For each character:
  i            e#   Push its code point.
   _32>        e#   Push 1 iff the code point is larger than 32.
       T=      e#   Select the element at that index from T = "_ ".
         t     e#   Replace the element at the code point's index with that char.
}/             e#
\              e# Swap the partially generated MINECARFT string on top.
4/z            e# Split into chunks of length 4 and zip.
N*             e# Join the rows, separating by linefeeds.
?              e# Select the first string iff the input was odd.

এটা কিভাবে কাজ করে?
অ্যানাটলিগ

@নাটোলিগ আমি আমার উত্তর সম্পাদনা করেছি।
ডেনিস

10

পাইথ - 182 বাইট

বেস এনকোডিং পদ্ধতির ব্যবহার করে। যেহেতু ইনডেক্সিং পাইথের ক্ষেত্রে মডুলার, তাই এমনকি বিজোড়ের জন্য আমারও কিছু করতে হবে না, কেবল এটি সঠিক ক্রমে রেখে দিন এবং ব্যবহার করুন @Q। বোনাস হিসাবে এটি নেতিবাচক সংখ্যাগুলির সাথেও কাজ করে।

@mjbcs@L"_| /\\-"jCd6 56,"EWbòH\x00B)þK٣ĭIOõìæ«FFãbÐÄBØ\«¼,vã<RN>­º:w÷ò¾<éifP9e|ÉWf!FÔèà""EWbòH\x00B)þOHÿ$@ËþçX'D[¾«Â?°´=&£üá ¹»ázHׯz3äkÕg{`!|ðY!ðGV"Q

আমি কেবল প্রথমটিকে একটি এনকোডিং করার চেষ্টা করেছি, তারপরে স্ল্যাশগুলি উল্টানো এবং স্যুইচ করতে চেষ্টা করেছি, তবে প্রথম এবং শেষ লাইনটি খুব শক্ত ছিল।

কোডে প্রকৃত নাল বাইট রেখে আমি 6 বাইট সংরক্ষণ করতে পারি, তবে এটি খুব বেশি সমস্যা।

এটি এখানে অনলাইনে চেষ্টা করুন

এটি অনলাইনে সত্যিই খারাপ দেখাচ্ছে কারণ আউটপুট বাক্সটি খুব ছোট এবং মোড়ানো। আমি দেব-কনসোল পরিবর্তন ঘটানোর এবং পরিবর্তন করার সুপারিশ col-md-5একটি থেকে col-md-7


দুটি স্ট্রিংয়ের ডুপ্লিকেট অক্ষরগুলির একটি গুচ্ছ রয়েছে, আপনি 11 টি বাইটকে এর মতো মুছতে পারেন
পূর্কাকাডারী

8

জাভাস্ক্রিপ্ট (ES6), 312, 285, 281, 272, 270, 263, 262, 260

পূর্ববর্তী সম্পাদনাগুলির জন্য সম্পাদনা ইতিহাস দেখুন

5 সম্পাদনা করুন: রূপান্তরটিতে, আমি যুক্ত নম্বর -(এখন 0) এবং সাদা স্থান (এখন 1) এর সাথে স্যুইচ করেছি । ফলস্বরূপ ব্লকে, 1, 2 এবং 3 সংখ্যাটি আর ব্যবহার করা হয়নি। এটি আমাকে অনুপস্থিত সংখ্যাগুলির সাথে একটি অ্যারে ব্যবহার করার অনুমতি দিয়েছে।

সম্পাদনা 6: অ্যারে আক্ষরিক উন্নত। আমি এটি আগে চেষ্টা করেছি, তবে সংখ্যার পরিবর্তে ব্যবহৃত 777এবং 77স্ট্রিং হিসাবে ব্যবহার করেছি এবং এখনই লক্ষ্য করেছি যে আমি এটি মিস করেছি।

সম্পাদনা 7: "গল্ফযুক্ত কোড" একটি ফাংশন, যেমন প্রশ্ন দ্বারা নির্দিষ্ট করা হয়েছে এবং f=এই স্পেসিফিকেশনটি পূরণ করার প্রয়োজন নেই । সুতরাং, এটি অপসারণ, দুটি বাইট সঞ্চয়।


ফায়ারফক্স 39 এ চলমান:

// Testing:

f=

// Golfed code:

n=>[...`11111113ss17ss1pp11117pp3ppp
97dj3dj7822j78z213e17z3v8397gm78212
7f3kf3k1z27k7z20021200k17fppk1z001z
d7983987j2287jz2ss1lss2aabj3d7987j2aa3aza`.replace(/[123]/g,x=>[,777,'77z',77][x])].map(a=>isNaN(i=parseInt(a,36))?a:'- /\\_|'[n%2?i%6:~~(i/6)]).join``

// Testing:

;document.body.appendChild(document.createElement('pre')).innerHTML=f(0);
document.body.appendChild(document.createElement('pre')).innerHTML=f(1);
document.body.appendChild(document.createElement('pre')).innerHTML=f(2);
document.body.appendChild(document.createElement('pre')).innerHTML=f(35);

এটি বেস 6 নম্বর সিস্টেমের উপর ভিত্তি করে এবং প্রতিটি ASCII চরিত্রটি একটি সংখ্যার জন্য দাঁড়ায়:

"-": 0
" ": 1
"/": 2
"\": 3
"_": 4
"|": 5

তারপরে, আমি প্রতিটি ASCII স্ট্রিংয়ের সংখ্যা উপস্থাপনা একত্রিত করেছি। উদাহরণস্বরূপ: যখন প্রথম হওয়া ASCII স্ট্রিং একটি রয়েছে /এক অবস্থানে এবং অন্যটি একটি রয়েছে \একই অবস্থান , যে অবস্থানে হয়ে 32, যা বেস 6 (হয় 20দশমিক মধ্যে)। যদি আপনি এটিকে বেস ৩ 36 এ রূপান্তর করেন ( প্রতি দুটি বেস -6 নম্বরের জন্য একটি বেস-36 number নম্বর পেতে) আপনি পাবেন ।k

এই সমস্ত আগেই করা হয়েছিল এবং ফাংশনটি মূলত এই প্রক্রিয়াটিকে পূর্বাবস্থায় ফিরিয়ে দেয়।

এখন দুটি জাভাস্ক্রিপ্টের উত্তর দুটিরই একে অপরের উত্তর রয়েছে, এতে একই বাইট গণনা রয়েছে…


পিএস: আমার কাছে একটি নোট এবং অন্যের কাছে একটি রেফারেন্স হিসাবে, আমি এই কোডটি ব্যবহার করেছি:

// 1. ASCII here
a=`|\\-/ _`;

// 2. ASCII here
b=`/|\\_ -`;

// Note: the ASCII strings’ backslashes have to be escaped!

[...a]
  .map((c,i)=>parseInt((c+b[i])
    .replace(/-/g,'0')
    .replace(/ /g,'1')
    .replace(/\//g,'2')
    .replace(/\\/g,'3')
    .replace(/_/g,'4')
    .replace(/\|/g,'5'),6))
  .map(c=>isNaN(c)
    ?`
`
    :c.toString(36))
  .join``
// Returns "wn3g7o", which is then put into the function as the block at the top.

2
গোশ, কেন ~NaN == -1?!
সেবাস্তিয়ান সাইমন

আমিও লাইন দ্বারা হওয়া ASCII স্ট্রিং লাইন reversing সম্পর্কে চিন্তা, এখনো আরো জায়গা trailing পরিত্রাণ পেতে (এটা এছাড়াও প্রতিস্থাপন দুই বাইট সংরক্ষণ করেছেন: […][x]+77, 77আর একটি স্ট্রিং হতে হবে না), কিন্তু অতিরিক্ত golfed কোডে reversing এটির জন্য এটি উপযুক্ত করে তোলে না ...
সেবাস্তিয়ান সাইমন

একবছর আগে প্রথম যখন এটি পড়েছিলাম তখন আমি এটি বুঝতে পারি নি তবে এখন আমি কৌশলটি দেখছি। :-) আমি এক অক্ষর প্রতিটি যুগল মিশ্রন খুব চালাক মনে আপনি প্রতিস্থাপন করতে পারেন isNaNসঙ্গে 1+, এবং ~~(i/6)সঙ্গে i/6|0
ETH প্রোডাকশনস

হাহাহা, আমি এখন এগিয়ে একটি বাইট;)
ইটিএইচ প্রোডাকশন

@ ইথ প্রডাকশন ভাল, এক সেকেন্ড ধরে রাখুন… আমি কেবল লক্ষ্য করেছি যে আপনার f=শুরুতে নেই, তবে আমি করছি। আমি এটিও পড়েছি যে এটি সরিয়ে নিতে এটি গ্রহণ করা হয়েছে, আমি নিজে এটি করব এবং এখন আমার 260 বাইট রয়েছে। ;)
সেবাস্তিয়ান সাইমন

6

সিজেম, 136 বাইট

"^ASÓ8¥È÷^K¯¾/^HÕ2^ÄË1jÒÝ^D^Á0îl;)HR§û|^Ê^Þ^ÇÝÅ^ßNlz^TfÑ^Øj>À^à 4#bH\¿^Äî·íì^E^A~(¿ø³(ú´,^È(¡j>è?#'»vçPïju87)×"
265b8b[S9*'|3*+S2*]"/-_\| "+f=s4/56/ri=zN*

উপরের অংশটি ক্যারেট স্বরলিপি ব্যবহার করে, যেহেতু কোডটিতে ছাপিয়ে অক্ষর রয়েছে।

লাইনফিডটি কেবলমাত্র "পঠনযোগ্যতা" এর জন্য। সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

যদি পারমালিঙ্ক আপনার ব্রাউজারে কাজ না করে, আপনি এই পেস্ট থেকে কোডটি অনুলিপি করতে পারেন ।

উদাহরণ রান

$ LANG=en_US
$ xxd -ps -r > minecraft.cjam <<< 220153d338a5c8f70bafbe2f08d53284cb316ad2dd048130ee6c3b294852a7fb7c8a9e87ddc59f4e6c7a1466d1986a3ec08320342362485cbf84eeb7edec05017e28bff8b328fab42c8828a16a3ee83f2327bb76e750ef6a75383729d7223236356238625b53392a277c332a2b53322a5d222f2d5f5c7c20222b663d73342f35362f72693d7a4e2a
$ cjam minecraft.cjam <<< 2; echo
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     | 
$ cjam minecraft.cjam <<< 1; echo
                       __    __                        
\        /  |  |  /|  |     /    |   /  \ __ /  |     | 
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

ধারণা

এই পদ্ধতির আমার অন্য উত্তরের সাথে কিছু মিল রয়েছে তবে এটি অনেক সহজ এবং (হতাশার চেয়ে) খানিকটা খাটো।

আমরা নিম্নলিখিত স্ট্রিংটি এনকোড করার জন্য একটি উপায় অনুসন্ধান করি:

                       __    __   __             __  ___                       __    __                         
  /\  /\    |  |\  |  |     /    |  |     /\    |     | \        /  |  |  /|  |     /    |   /  \ __ /  |     | 
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |  \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | 
/        \  |  |  \|  |__   \__  |   \  /    \  |     |   \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

প্রতিটি সারিতে প্যাডিংয়ের পরে (একটি ধ্রুবক রেখার দৈর্ঘ্য অর্জন করতে), জিপিং করা (সারি এবং কলামগুলি স্থানান্তর করা) এবং লাইনফিডগুলি অপসারণ করার পরে, এই স্ট্রিংটি এনকোড করতে হবে:

   /  /  /   \    \   /  /   \    \    \         |||         ||| \    \    \ |||         |||_ -__ -_          |  / \_  __  _         |||_ - _ -  |\    \           /  /  /_  \_   \    \         |||_ - _ -         _   _|||_    \    \    \   /  /   \    \   /  /  /           |||         |||   /  /  /   |||         |||_ -__ -_          |  / \_  __  _         |||  -_  -_  /| /           \    \  _ \ _ /  /  /           |||  -_  -_           _ |||   _

আমরা একে সাবস্ট্রিং প্রতিস্থাপন করব " |||"একটি সঙ্গে 0 , প্রতিটি সাবস্ট্রিং " "একটি সঙ্গে 1 এবং অক্ষর "/-_\| "দিয়ে 2 থেকে 7 , বেস 8 সংখ্যা, যা বাইট স্ট্রিং হিসেবে এনকোড করা যেতে পারে একটি অ্যারের বিরচন।

উপর থেকে পদক্ষেপগুলি বিপরীত করে ডিকোডিং কাজ করে।

কোড

"^ASÓ8¥È÷^K¯¾/^HÕ2^ÄË1jÒÝ^D^Á0îl;)HR§û|^Ê^Þ^ÇÝÅ^ßNlz^TfÑ^Øj>À^à 4#bH\¿^Äî·íì^E^A~(¿ø³(ú´,^È(¡j>è?#'»vçPïju87)×"

265b8b        e# Convert from base 265 to base 8.
[S9*'|3*+S2*] e# Push ["         |||" "  "].
"/-_\| "+     e# Concatenate to push ["         |||" "  " '/' '-' '_' '\' '|' ' '].
f=            e# Select the elements that correspond to the base 8 digits.
s4/           e# Flatten and chop into chunks of length 4 (columns).
56/           e# Chop into two subarrays of 56 columns.
ri            e# Read an integer from STDIN.
=             e# Select the corresponding subarray.
              e# Arrays wrap around, so [A B]0= eq. [A B]2= and [A B]1= eq. [A B]3=.
zN*           e# Zip and join the rows, separating by linefeeds.


4

কোলাহল, 443 434 386 বাইট

(require file/gunzip net/base64)(define(f n)(define o(open-output-bytes))(gunzip-through-ports(open-input-bytes(base64-decode #"H4sIAK8Lt1UAA22Q3Q3AIAiE352CBcwtRHLpHg7f8lubahRUDuVD5DjItrH9REgOEWgskfVMDeca1GWcSmN2WFBtlUTdzdmSOT0BpEpGnjxUAf2RmvPq1OyKGF6N5V1nvgYcWjeod/Hj8JotBRtH0qM48OeoWrBxJH23KL/dOMh4IDXe8MUbT1AqtKkBAAA="))o)(list-ref(string-split(get-output-string o)"a")(modulo n 2)))

শুধু লাথি জন্য।

(require file/gunzip net/base64)
(define (f n)
  (define o (open-output-bytes))
  (gunzip-through-ports
   (open-input-bytes
    (base64-decode #"H4sIAK8Lt1UAA22Q3Q3AIAiE352CBcwtRHLpHg7f8lubahRUDuVD5DjItrH9REgOEWgskfVMDeca1GWcSmN2WFBtlUTdzdmSOT0BpEpGnjxUAf2RmvPq1OyKGF6N5V1nvgYcWjeod/Hj8JotBRtH0qM48OeoWrBxJH23KL/dOMh4IDXe8MUbT1AqtKkBAAA="))
   o)
  (list-ref (string-split (get-output-string o) "a") (modulo n 2)))

NB আপনার #lang racketDrRacket চালানোর জন্য লাইনের প্রয়োজন হতে পারে ।


1
ঠিক 100 বাইট বন্ধ।
ব্যবহারকারী 253751

1
চলে আসো! আমি জানি আপনি এটিকে 343 এও করতে পারেন
অপটিমাইজার

আমি যদি এই পদ্ধতির বিষয়টি ত্যাগ না করি তবে তা ঘটছে না don't
উইনি

আপনাকে বেস
64৪

4

05 এ বি 1 ই , 179 177 176 বাইট

"
 -/\_|"•ÿ%Ò´Åçδ’Üå·Äm…½µƵδø5)ǝ®∊∊Ý®þCĀ₆áÝoþ²ši¤Æ%ßû¤%¦Ï≠θĀ5¾₃ʒŸQ>Šn°η8±8d¸6':…é’b…÷‡ö©«&‡huѦ%λÁZÊJÌ₅ú∞°»ó₄ι«ÓW´×ƒ×ùqiò2D1āwθóÆË²’
Tι#и∊²ý‚KʒFæΩZºÿÏ";ηiʒæøвøïž‚è°ć½∊•7вèJ2äIè

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

•ÿ%Ò´Åçδ’Üå·Äm…½µƵδø5)ǝ®∊∊Ý®þCĀ₆áÝoþ²ši¤Æ%ßû¤%¦Ï≠θĀ5¾₃ʒŸQ>Šn°η8±8d¸6':…é’b…÷‡ö©«&‡huѦ%λÁZÊJÌ₅ú∞°»ó₄ι«ÓW´×ƒ×ùqiò2D1āwθóÆË²’
Tι#и∊²ý‚KʒFæΩZºÿÏ";ηiʒæøвøïž‚è°ć½∊•

হয় সংকুচিত সংখ্যা :

669530978249988431396781816197276307266403407188962925862194299697873953319419752813246251351417090709766331736351616127424760949905163941809417778114834562736028512279028673309866195447599979612590918985644583407413903825059942009898007791080822453262749380245316127735585410697701790387188175543639634091138422651942833048832372950797322005040161476426127678479662921265139425

এটি অনলাইনে চেষ্টা করুন।

এটিকে বেস হিসাবে 7-এ রূপান্তর করে, সুতরাং আমরা সংখ্যার তালিকা পাই:

[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,5,5,5,0,1,1,3,4,1,1,3,4,1,1,1,1,6,1,1,6,4,1,1,6,1,1,6,1,1,1,1,1,3,1,1,1,1,6,1,1,6,1,1,1,1,1,3,4,1,1,1,1,6,1,1,1,1,1,6,0,1,3,1,1,4,3,1,1,4,1,1,1,6,1,1,6,1,4,1,6,1,1,6,2,2,1,1,6,1,1,1,1,1,6,2,2,4,1,1,1,1,3,5,5,4,1,1,1,6,2,2,1,1,1,6,0,3,1,1,1,1,1,1,1,1,4,1,1,6,1,1,6,1,1,4,6,1,1,6,5,5,1,1,1,4,5,5,1,1,6,1,1,1,4,1,1,3,1,1,1,1,4,1,1,6,1,1,1,1,1,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,1,1,1,1,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,4,1,1,1,1,1,1,1,1,3,1,1,6,1,1,6,1,1,3,6,1,1,6,1,1,1,1,1,3,1,1,1,1,6,1,1,1,3,1,1,4,1,5,5,1,3,1,1,6,1,1,1,1,1,6,0,1,4,1,1,3,4,1,1,3,1,1,1,6,1,1,6,1,3,1,6,1,1,6,2,2,1,1,6,1,1,1,1,1,6,2,2,3,1,1,1,1,4,1,1,3,1,1,1,6,2,2,1,1,1,6,0,1,1,4,3,1,1,4,3,1,1,1,1,6,1,1,6,3,1,1,6,1,1,6,5,5,1,1,1,4,5,5,1,1,6,5,5,6,1,1,1,1,1,4,3,1,1,1,1,6,5,5,1,1,5,6,5]

এটি অনলাইনে চেষ্টা করুন।

èস্ট্রিংয়ের প্রতিটি ডিজিটকে ইনডেক্স করে "\n-/\_|"এবং Jতারপরে পুরো লিস্টে একসাথে যোগ দেয়, যা আমাদের নীচে দেয়:

                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |                       __    __                        
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

এটি অনলাইনে চেষ্টা করুন।

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

@ ম্যাজিকঅ্যাক্টোপাসউর্ন এর এএসসিআইআই কমপ্রেসারকে প্রচুর ধন্যবাদ যা সংকুচিত নম্বর এবং বেস -7 ট্রান্সলিটাল উত্পন্ন করতে ব্যবহৃত হয়েছিল। এটি অনলাইনে চেষ্টা করুন। (যার পরে ট্রান্সলিট্রেটকে স্ট্যাকের স্ট্রিং এবং সংখ্যাটি উল্টিয়ে দিয়ে অঙ্কগুলির তালিকা তৈরি করার вপরিবর্তে ব্যবহার Bকরে স্ট্রিংয়ের সাথে সূচী হয় è


3

সি, 251 বাইট

k(w){char*f="_-/\\|]^^^\0<&*&)&3&(&&WX&J&*&\0t_&/&3&\0`);35)I5M\0a).@7).8-;./.-\0j()(0(1+4()(*+4+4()(04+",*o=f+4,m[229]="",i=7,c=10,p;for(memset(m,32,228);i;c=*f++^(w%2&i--/2==2)*115)for(p=0;*++o;m[(w%2?4-i/6-p/57:p/57)*57+p%57]=c)p+=*o-37;printf(m);}

এটি এমন একটি ফাংশন kযা একটি পরামিতি গ্রহণ করে এবং বার্তাটি মুদ্রণ করে stdout

আরও পঠনযোগ্য সংস্করণ:

k(w)
{
    char*f="\n_-/\\|", // characters to fill in
        *o= " "// for each character, the list of positions to put it in, difference-encoded
        "]%%^^^\0"                  // for '\n' (newline)
        "<&*&)&3&(&&WX&J&*&\0"      // for '_' (underscore)
        "t_&/&3&\0"                 // for '-' (minus)
        "`);35)I5M\0"               // for '/' or '\' (slashes)
        "a).@7).8-;./.-\0"          // for '\' or '/' (slashes)
        "j()(0(1+4()(*+4+4()(04+",  // for '|' (vertical bar)
        m[229]="",  // message to generate
        i, // index of character, running 7...1
        c, // current character to fill in
        p, // where to place the character
        y; // y-coordinate of the character

    memset(m,32,228); // fill the message with spaces
    for(i=7;--i;)
    {
        c=*f++;
        c^=~w%2|i/2^1?0:115; // flip the direction of slashes, if needed
        for(p=0;*++o;)
        {
            p+=*o-37; // jump to next position
            y=p/57; // extract the y-coordinate
            y=w%2?4-i/5-y:y; // flip the y-coordinate, if needed
            m[y*57+p%57]=c; // place the character
        }
    }
    printf(m); // print the message
}

প্রথমত, এটি একটি খালি বার্তা প্রস্তুত করে (স্থান দিয়ে ভরা) filled প্রতিটি চরিত্রের জন্য (যেমন |বা -), এর মধ্যে অক্ষরটি রাখার জন্য পজিশনের একটি তালিকা রয়েছে।

প্রতিটি অবস্থানের জন্য, যদি উল্টো সংস্করণটি মুদ্রণ করা উচিত, তবে অবস্থানটি উল্টানো হবে। অর্থাৎ এর উল্লম্ব স্থানাঙ্ক yপ্রতিস্থাপন করা হয় 4-yবা 3-y(চরিত্রটি আন্ডারস্কোর কিনা তার উপর নির্ভর করে)। এছাড়াও, স্ল্যাশ এর নির্দেশ ফ্লিপ হয় - এই একটি দ্বারা সঞ্চালিত হয় XORসঙ্গে 115

এই নিয়ন্ত্রণ কাঠামোটি নতুন লাইনের অক্ষরগুলি রাখার জন্যও ব্যবহৃত হয় - সুস্পষ্ট লুপ লেখার চেয়ে তালিকায় আরও 4 টি স্থানাঙ্ক যুক্ত করা আরও দক্ষ বলে মনে হয়।


এই সিস্টেমের সাথে কয়েকটি ছোট ছোট গ্ল্যাচ রয়েছে। প্রথমত, চূড়ান্ত অক্ষর টি উল্টানো সংস্করণে কিছুটা আলাদা দেখায়:

___ 
 |    |
 |    |
 |   _|_

এটিকে সঠিকভাবে আউটপুট করতে কোডটিকে |অক্ষরের পরে _অক্ষর রাখতে হবে।

এছাড়াও, কন্ট্রোল স্ট্রিংটিতে কেবলমাত্র ASCII অক্ষর রয়েছে তা নিশ্চিত করার জন্য, আমি এটিকে এনকড করেছি:

  • এটি পজিশনের পরিবর্তে পজিশনের মধ্যে পার্থক্যগুলি নিজেরাই রেকর্ড করে - এটি পরিসীমা হ্রাস করে
  • স্ট্রিংয়ের সংখ্যাগুলি 37তাদের এএসসিআইআই রেঞ্জ 32 ... 127 এ স্থানান্তর করতে তাদের সাথে যুক্ত করেছে। আমি একটি ছোট সংখ্যা যুক্ত করতে পারলাম, তবে এর 37মতো অক্ষরগুলি এড়িয়ে চলি "এবং \স্ট্রিং ল্যাটারেলের ভিতরে এড়াতে হবে।
  • দুটি সংখ্যার চেয়ে 127 এর বেশি ছিল - উদাহরণস্বরূপ, প্রথম -অক্ষরটি 137 অবস্থানের উপরে উপস্থিত হয়। এটির জন্য অ্যাকাউন্টে আমি একটি কৃত্রিম -চরিত্রকে অন্য অবস্থানে যুক্ত করেছি ()৯), যা পরে ওভাররাইট করা হয়েছে - অক্ষরটিও |position৯ নম্বরে উপস্থিত হয়।

আর একটি মজার বিষয় হ'ল আমি putsস্ট্রিং আউটপুট ব্যবহার করতে পারি না - এটি একটি অতিরিক্ত ট্রিলিং নিউলাইন তৈরি করবে। সুতরাং আমি printfপরিবর্তে ব্যবহার ।

এছাড়াও, 57গল্ফড কোডে সংখ্যাটি 4 বার উপস্থিত হয় - আপাতদৃষ্টিতে দীর্ঘ-বায়ুযুক্ত এক্সপ্রেশনটি (w%2?4-i/6-p/57:p/57)*57+p%57ভেরিয়েবলটিকে নির্মূল করা সম্ভব করে, কোডকে ছোট করে তোলে y


সি মনে হয় এই জাতীয় "এই কোডটি দিয়ে এই কন্সট্রাক্ট সবসময় লিখুন" ধরনের ভাষা ... এটি ... এটি ... খুব ... উম ... +1;)
তালি

3

পার্ল, 292 259 246 বাইট

$_="Svv __SS__S nnSv nnSnnn
i kjSkj hw|j h|wS /SwrhSi pq hwS |
 mSlmSlS |S| l |S|--wS |--lSSmnnlS |--S |
k ihSih jw|h j|S|__S g__S|oosjSk ih jS|ooSo|o";s/v/SSSSS/g;s/w/S|S/g;s/S/  /g;<>&1?y"g-s"\\/\\  /\\ ___ |":y"g-s"\\  \\/\\/_ /\\| ";print $_

দুটি স্ট্রিং বেশিরভাগই সমান (যেমন পুরো আই এবং সি) এবং স্ট্রিংটি অক্ষরের বাইরে বের করে দেয় যা কোন সংস্করণ প্রদর্শিত হচ্ছে তার উপর নির্ভর করে পৃথকভাবে প্রদর্শিত হয় তার সত্যতা গ্রহণ করে। উদাহরণস্বরূপ মি এর অর্থ "ডান-ওয়ে-আপ স্ট্রিংয়ের জন্য একটি ফরোয়ার্ড স্ল্যাশ, উপরের দিকের অংশে একটি পিছনের স্ল্যাশ"। এটি সঠিক চরিত্রটি প্রদর্শনের জন্য একটি লিখিত লিখনের প্রতিস্থাপন করে। স্পেসগুলি স্ট্রিং বিকল্পগুলি ব্যবহার করে রান-লেংথ এনকোডযুক্ত।

বহু-লাইন:

$_="Svv __SS__S nnSv nnSnnn
i kjSkj hS|S|j h|S|SS /SS|SrhSi pq hS|SS |
 mSlmSlS |S| l |S|--S|SS |--lSSmnnlS |--S |
k ihSih jS|S|h j|S|__S g__S|oosjSk ih jS|ooSo|o";
s/v/SSSSS/g;
s/w/S|S/g;
s/S/  /g;
<>&1?
    y"g-s"\\/\\  /\\ ___ |"
:
    y"g-s"\\  \\/\\/_ /\\| ";
print $_

ধারণা:

আউটপুটে কেবল 22 টি অনন্য কলাম রয়েছে, সুতরাং 56 character অক্ষরের অনুসন্ধানের সাথে 0-17 (সমস্ত সম্ভাব্য "দ্বৈত-অর্থ" অক্ষর) সহ এটি 22 * ​​4 = 88 অক্ষর হিসাবে সংরক্ষণ করা উচিত should প্রতি কলামে 0-21 এর ব্যাপ্তিতে এক এন্ট্রি সহ টেবিল। তত্ত্বের ক্ষেত্রে এটি <100 বাইটের সাথে এনকোড করা যেতে পারে তবে এটি ডিকোড করার জন্য আরও জটিল কোডের কারণে এটি নেট জয় করা শক্ত।


2
আপনি বেশ কয়েকটি বাইট শেভ করতে পারেন - y / foo / bar / টিআর /
ফু

2

সিজেএএম, 206

দুটি আসকি ছবি বেস -216 এনকোডেড, একটি বাইট = 3 অক্ষর।

" _\/|-":A;S7*"!D!D"+:B;qi2%{B"h  °°¤8 2 °2,J° °"",4# °³8=Ô° Ó\"# Ó °""\"z °Â89D-D·° z ·!¶"}{B"'    '!J"+"#h °¼88 2 °°  ° °""2/\" °²8=Ô° Óh#L Ó °""  h°°9D-D°,2 h° °"}?]{{i32-__36/A=@6/6%A=@6%A=}/N}/

এটি এখানে পরীক্ষা করুন


2

পাওয়ারশেল, 275 253 248 বাইট

param($n)$d='8 \83484/7/484302 92984308 92918--118--128||6//0\16116129558| \/ |8 /02083\6/10018/6\302 955776_71 9_7_'
'8\,__,777,/6 /,\6/6\,_8 -- _,88,888,  ,||||||'-split','|%{$d=$d-replace+$i++,$_}
0..3|%{$l=$_;-join$d[(0..55|%{$_*8+$l*2+$n%2})]}

পরীক্ষার স্ক্রিপ্ট:

$f = {

param($n)$d='8 \83484/7/484302 92984308 92918--118--128||6//0\16116129558| \/ |8 /02083\6/10018/6\302 955776_71 9_7_'
'8\,__,777,/6 /,\6/6\,_8 -- _,88,888,  ,||||||'-split','|%{$d=$d-replace+$i++,$_}
0..3|%{$l=$_;-join$d[(0..55|%{$_*8+$l*2+$n%2})]}

}

&$f 2
&$f 1

আউটপুট:

                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |
                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

মূল ধারনা

সংক্ষেপণ পদ্ধতি ডেনিস দ্বারা সিজেমের প্রসারিত পদ্ধতি ♦:

  1. সংক্ষেপণের আগে একটি স্ট্রিং তৈরি করুন:
    • দুটি ASCII আর্টস এর প্রথম কলামের অক্ষর, তারপরে
    • দ্বিতীয় কলামের অক্ষরগুলি, তারপরে
    • তৃতীয় কলামের অক্ষর এবং আরও ...
  2. একটানা 10 টি প্রতিস্থাপন ব্যবহার করে সংকুচিত করুন (10 কারণ পাওয়ারশেল স্ট্রিং হিসাবে 0..9 সংখ্যা ব্যবহার করতে পারেন, এটি ক্ষয়কারী অ্যালগরিদমকে সংক্ষিপ্ত করে তোলে ru জোর বল দ্বারা প্রতিস্থাপনগুলি found

সংক্ষেপণের জন্য স্ক্রিপ্ট:

$src =
"                       __    __   __             __  ___", # line1, art1
"                       __    __                         ", # line1, art2
"  /\  /\    |  |\  |  |     /    |  |     /\    |     | ", # line2, art1
"\        /  |  |  /|  |     /    |   /  \ __ /  |     | ", # line2, art2
" /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   | ", # line3, art1
" \  /\  /   |  | / |  |--  |     |--/    \  /   |--   | ", # line3, art2
"/        \  |  |  \|  |__   \__  |   \  /    \  |     | ", # line4, art1
"  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_"  # line4, art2

$z=-join(0..$src[0].Length|%{
    $p=$_
    $src|%{$_[$p]}
})
$z

সংক্ষেপণের আগে স্ট্রিংটি হ'ল:

   \  /     /\    /    \  \    /    \/      /\    /    \  \    /    \/     /  \                   ||||||                  ||||||  \    /    \/     /  \   ||||||          ||||||__  --____  --__                    ||    //  \\__    ____    __                  ||||||_   -- __   -- _  | \/ |   /  \                    \  /     /\  /__  \  \__  /    \/     /  \                   ||||||_   -- __   -- _                _      __ ||||||_      _

আপনার উত্তরটিতে ব্যাখ্যাটি সম্ভবত আমার সমস্ত উত্তরগুলির সংযুক্তির চেয়ে বেশি প্রচেষ্টা করা হয়েছিল! +1
মিলকিওয়াই 90

1

এসএএস, 442 বাইট

%macro a(b);&b=tranwrd(&b,put(i,1.),repeat('A0'x,i));%mend;%macro b(z);length a b c d$99;if mod(&z,2)then do;a='992__3__';b='\7/1|1|1/|1|4/3|2/1\0__0/1|4|';c='0\1/\1/2|1|0/0|1|--1|4|--/3\1/2|--2|';d='1\/1\/3|1|/1|1|__2\__1|__|4\/3|__1_|_';end;else do;a='992__3__2__65__1___';b='1/\1/\3|1|\1|1|4/3|1|4/\3|4|';c='0/1\/1\2|1|0\0|1|--1|4|--\3/__\2|--2|';d='/7\1|1|1\|1|__2\__1|2\1/3\1|4|';end;do i=0to 9;%a(a)%a(b)%a(c)%a(d)end;put a/b/c/d;%mend;`

অ golfed:

%macro a(b);
  &b=tranwrd(&b,put(i,1.),repeat('A0'x,i));
%mend;

%macro b(z);
length a b c d$99;
if mod(&z,2)then do;
  a='992__3__';
  b='\7/1|1|1/|1|4/3|2/1\0__0/1|4|';
  c='0\1/\1/2|1|0/0|1|--1|4|--/3\1/2|--2|';
  d='1\/1\/3|1|/1|1|__2\__1|__|4\/3|__1_|_';
end;
else do;
  a='992__3__2__65__1___';
  b='1/\1/\3|1|\1|1|4/3|1|4/\3|4|';
  c='0/1\/1\2|1|0\0|1|--1|4|--\3/__\2|--2|';
  d='/7\1|1|1\|1|__2\__1|2\1/3\1|4|';
end;
do i=0to 9;
  %a(a)
  %a(b)
  %a(c)
  %a(d)
end;
put a/b/c/d;
%mend;

পরীক্ষা:

data a;
  %b(1)
  %b(2)
  %b(0)
  %b(35)
run;
                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |
                       __    __   __             __  ___
  /\  /\    |  |\  |  |     /    |  |     /\    |     |
 /  \/  \   |  | \ |  |--  |     |--\    /__\   |--   |
/        \  |  |  \|  |__   \__  |   \  /    \  |     |
                       __    __
\        /  |  |  /|  |     /    |   /  \ __ /  |     |
 \  /\  /   |  | / |  |--  |     |--/    \  /   |--   |
  \/  \/    |  |/  |  |__   \__  |__|     \/    |__  _|_

কোডগুলি সম্ভবত ইনপুট ব্লকগুলিতে রেখে কিছুটা সংরক্ষণ করতে পারে, তবে এতে মীমাংস কেবলমাত্র মেট্রো হিসাবে লেখার চেতনা লঙ্ঘন করে বলে মনে হয় যা ডেটাস্টেপ প্রতি একবার হতে পারে adds (এবং আমার সন্দেহ হয় যে ডেটাস্টেপটিতে ইনপুট পেতে আরও একটি অক্ষর যুক্ত হবে) adding


1

বাশ, 247 বাইট

(($1%2)) && c=tail || c=head
base64 -d <<<H4sIAF/3uFUCA31Q2w3AIAj8ZwoWMLcQyS3i8JWXtWlTI6BwPA7Vz0Nunc9HhKSowlJU57qWJjBoZ/4a41o8aC4NsTBjbMgYkQDStCIrDz3AbmRuYjpzPTOGG5P9/gmKtQddFy8eMbOn4Khb7NE88ObRs+DgUez3iqrtwYPMAoWJhU/KBeJFPOCqAQAA | zcat | $c -n4

স্ট্রিংগুলি সংক্ষিপ্ত এবং জিজিপযুক্ত হয়।


1

পিএইচপি, 225 বাইট

কুরুচিপূর্ণ, নিষ্ঠুর শক্তি সমাধান।

echo str_split(gzinflate(base64_decode('dZDdDcAgCITfnYIFzC1Ecos4fOW3Nm2NgsohfIp8DrJtbB8RkkMEGktk7anhXIO6jFNpzA4Lqq2SqLs5WzKnJ4BUycjOQzXQhdScd6dmV8Rwa7rqP9/QukE9ixeGt2wpODASHoWBN0a1ggMj4fuHsuyBQcYDqfH/XrwA')),224)[$argv[1]%2];

আমি সংকুচিত হয়েছি তখন বেস 64 প্রদর্শিত হওয়ার জন্য কনটেনেটেড স্ট্রিংগুলি এনকোড করেছে। কোডটি ডিকোড করে, ডিকম্প্রেস করে এবং 224 টি অক্ষরের টুকরো টুকরো টুকরো করে। প্রথম স্ট্রিংটি 224 টি অক্ষর যার পিছনে থাকা নতুন লাইন নয়, দ্বিতীয়টি 201 টি অক্ষর (এটির পরেও কোনও নতুন লাইন নয়)। কমান্ড লাইন আর্গুমেন্টের প্যারিটি ( $argv[1]%2) দ্বারা উত্পাদিত অ্যারে সূচক হিসাবে ব্যবহৃত হয় str_split()


1

হাস্কেল, 138 বাইট

m x=do
 h<-readFile"a"
 return$take 225.drop(225*mod x 2)<$>find((==h).hash.pack)(replicateM 425"/\\|_- ")

এটি হ্যাক একটি বিট। আমি দুটি মাইনক্রাফ্ট পাঠ্যের সংমিশ্রণের SHA256 হ্যাশটিকে ক্ষুধা দিচ্ছি, এবং তারপরে এগুলি বিভক্ত করে প্যারামিটার x এর উপর ভিত্তি করে উপযুক্ত পাঠ্য চয়ন করছি। এটি খুব অযৌক্তিক এবং এটি বাস্তব সময়ে গণনা করা যায় না, এবং আমার জানা সমস্তগুলির জন্য পথে সংঘর্ষও হতে পারে।

যেহেতু হাস্কেলের স্ট্রিংতে সেই হ্যাশের ASCII প্রতিনিধিত্ব থাকতে পারে না, তাই আমি এটি "এ" নামক একটি ফাইল থেকে পড়ছি, এবং এরপরে আমার স্কোরটিতে 32 বাইট যুক্ত করেছি।

  • readFile এবং প্যাকটি ডেটা.বাইটস্ট্রিং.চার 8 থেকে
  • হ্যাশ ক্রিপ্টো.হ্যাশ.এসএএচএল 256 এর

Explaination:

replicateM 425"/\\|_- "

425 বর্ণগুলিতে "/ \ | _-" অক্ষরের প্রতিটি সংমিশ্রনের একটি তালিকা তৈরি করে (উভয় মাইনক্রাফ্ট পাঠ্য সংযুক্ত)

find((==h).hash.pack)

হ্যাশের সাথে মেলে এমন প্রথমটি চয়ন করুন

take 225.drop(225*mod x 2)

প্রথম পাঠ্যটি 225 বর্ণের দীর্ঘ, অন্যটি হ'ল 200।


106 বাইট, 138 নয়
বিড়াল

আমার ব্যাখ্যা দেখুন, আমি 32 বাইট যুক্ত করেছি কারণ আমি একটি 32 বাইট দীর্ঘ ফাইল পড়ছি
ব্ল্যাকক্যাপ

1

জাভাস্ক্রিপ্ট (ES6), 403 296 বাইট

(আমার আগের উত্তর থেকে সরানো ) একটি নতুন পদ্ধতি চেষ্টা করে দেখুন:

n=>`55555559Å9Å${n%2?`55555558556776}}5Y75Y¥Æ75786¡YAA[7ćA5Fï5¡YFéA8Y§5}\x83AEÅKÅ\x99}5§5\x999\x95`:`Q5555Q9Ý>6¡77¡}}5Y7756¡75768Y¡AA£7ćA5Fû5u¡FéAY55¡}}­EÅKÅ}G;5¡}5}`}`.replace(r=/./g,x=>(163+x.charCodeAt()).toString(6).slice(1)).replace(r,x=>' /|\\_-'[x]).match(/.{56}/g).join`
`

নোট করুন যে কয়েকটি অচিহ্নিত অক্ষর রয়েছে; এগুলি উদাহরণস্বরূপ প্রতিস্থাপন করা হয়েছে \x83

এনকোডিংটি নিজেই অন্যটির চেয়ে প্রায় 40 বাইট কম, তবে ডিকোডিং প্রক্রিয়াটি আরও বিস্তৃত। আমি বেস 216 সিস্টেমটি ব্যবহার করেছি যা অন্যরা পাঠ্যটি এনকোড করতে ব্যবহার করেছেন। রেফারেন্সের জন্য, আমি যে কোডটি ব্যবহার করেছি তা এখানে:

// normal MINECRAFT
a='00000000000000000000000440000440004400000000000004400444'+
  '00130013000020023002002000001000020020000013000020000020'+
  '01003100300020020302002550020000025530000144300025500020'+
  '100000000300200200320024400034400200030010000300200000200';

// upside-down MINECRAFT
// un-comment this one to run it
/*
a='00000000000000000000000440000440000000000000000000000000'+
  '30000000010020020012002000001000020001003044010020000020'+
  '03001300100020020102002550020000025510000300100025500020'+
  '003100310000200210020024400034400244200000310000244004240';
*/

console.log(a.replace(/.../g,x=>String.fromCharCode(parseInt(b[i],6)+53)));

এটি মূলত এএসসিআইআই পাঠ্য (পূর্বনির্ধারিত 6 বেসে রূপান্তরিত) নেয় এবং এটি নিজেই ট্রিপল করে এটি 211 বেসে পরিবর্তন করে 53 53 বেশিরভাগ মুদ্রণযোগ্য অক্ষরগুলি মুছে ফেলার জন্য যুক্ত করা হয়।

পরামর্শ স্বাগত!


এখানে আসল 403-বাইট কোডটি রয়েছে:

a=n=>{y=[' ','/','|','\\','_','-'],x=`55555559Å9Å${n%2?`55555555¡55Y}}eA5;5};GÝY}5}¡k;77;} 757Ĉ5G;7ć75§H5AB77Ý8ÝEÑ5H5EÅÕ`:`Q5555Q9Ý6¡k5}\u008FAA5;5}}5k5}5}Y§G77G} 757Ċ5?×7ć7;55GAAI7Ý8ÝA865GA5A`}`;b=x.split('').map(x=>x.charCodeAt(0)-53);for(c=[],i=b.length;i--;){c[i]=b[i].toString(6);while(c[i].length<3)c[i]='0'+c[i]}d=c.join('').replace(/\d/g,x=>y[x]).split('');d[56]=d[112]=d[168]=`
`;return d.join('')};

একটি forলুপ, একটি whileলুপ, চারটি ভেরিয়েবল যা কেবল একবার ব্যবহার করা হয়েছিল এবং সাধারণ জিনিসের জন্য এক টন দীর্ঘ অ্যালগরিদম ব্যবহার করে Using ছেলে, আমি কি উন্নতি করেছি ...


আপনি সম্ভবত সম্পূর্ণরূপে অপসারণ করতে পারেন y=[' ','/','|','\\','_','-'],এবং পরিবর্তে y[x]লেখার জন্য ' /|\\_-'[x]। =)
সেবাস্তিয়ান সাইমন

@ শুফফক্স আমি এটি এবং আরও অনেক কিছু করেছি, মোট 107 বাইট গল্ফ করে!
ETH প্রোডাকশনগুলি

0

পাইথন, 312 বাইট

def y(b):
 x=int(['4vwhclv10tuk4z18gf73aimn6zvwkrhxekphfn1lxocj9ezchd1cd1cv97p3f6k12s8hcjznnm5iq3om4vgxvugp3makgu4n3f6qxvdrtl4c0lva12hwt','8uzwdylhtrf6oqnwnck8pfxu25m5844tuo2700v3zoeuvossx1b47rnwyrmqodau3feu3spi9jydhyxvntv48vojx9iq9af78wufzn1'][b%2],36);x<<=69;s="";t=" /\\-|_\n"
 while x:s+=t[x&7];x>>=3
 print s

একটি int দেওয়া ফাংশন মুদ্রণ আউটপুট


হ্যাঁ, আমি এটি আরও কম করে সংকোচনের একটি ঝরঝরে পথের দিকে তাকিয়ে যাচ্ছি যদিও
ব্লু

কিভাবে কাজ করে?
অলিভার নি

বেস -36 হয়? কিন্তু এটা হলে কি 16598125653940296495007405984048067937906981182427207589486265398555496561913976121109917896233762115477615438181875147062369253802653987802486539858466848179256705775331854915993645
অলিভার এন

মূলত, এটি দুটি ফলাফলকে একটি তালিকায় সংরক্ষণ করে এবং তারপরে মডুলাস ফাংশনটি ব্যবহার করে সঠিক ফলাফল পায়। এরপরে এটি 36-বেস থেকে ডিকোড করুন যেমনটি আপনি ভেবেছিলেন। কারণ এটি 2 এর একটি বড় শক্তি ছিল, >> >> 69 দিয়ে আমি কিছু অক্ষর সরিয়েছি। আমি তারপরে এটিকে সঠিক আউটপুটে রূপান্তর করতে একটি মৌলিক অনুবাদ ফাংশন ব্যবহার করি।
নীল

0

সি, 321 বাইট

পুনরাবৃত্তি এবং অক্ষর সূচকে একটি স্ট্রিংয়ে এনকোড করে।

main(n,v,p,c)char**v,*p,*c;{c=" _/\\|-\n";for(p=atoi(v[1])%2?"8@8iXivs8rhththrthtPrXt`rhspiprhtPtvpshrshr`thtprpthtmhtPtmrXshr`tm`tvhsrhsrXthtrhthti`sihtitPsrXtihqtq":"8@8iXi`i8PihavhrshrsXthtshthtPrXthtPrsXtPtvprhsrhs`thtpspthtmhtPtmsXris`tm`tvr8shththsthti`siht`shrXshtPtw";*p;p++)for(n=*p/8^15;n--;)putchar(c[*p&7]);}

0

পাইথন 3, 486 533 612

r=str.replace;m,p=r(r(r('''YYYYY   __YA AYY   A___
  /\  /\YX\  X Y/YX Y/\Y| Y|
 /  \/  \   X \ X--  | Y|--\Y/__\   |--   |
/YY\  X  \XA \A|   \  /Y\  | Y| ''','X','|  |'),'Y','    '),'A','__  '),print;
if int(input())%2==0:p(m)
else:
 q,i,u=m.split('\n')[::-1],0,[[23,24,29,30],[42,43],[],[23,24,29,30,34,35,53,49,50,55]];q.insert(0,q.pop())
 while i<len(q):
  x=list(r(q[i],'_',' '))+[' ']
  for a in u[i]:x[a]='_'
  p(r(r(r(r(''.join(x),'___',''),"\\",'t'),'/',"\\"),'t','/'))
  i+=1

0

পিএইচপি , 263 বাইট

<?=strtr('3333 20220'.['2 0332 020_
2/\2/\211\113/2113/\212 1
 /2\/2\ 11 \ |1412 14\22/0\ 14 1
/32 \112\|102 \012 \2/22\12 1',
'
\32 /112/|13/212 /2\ 0 /12 1
 \2/\2/ 11 / |1412 14/22\2/ 14 1
2\/2\/211/1102 \010|3\/2102_|_'][$argn&1],[__,"  |","  ","     ","--"]);

এটি অনলাইন চেষ্টা করুন!


আপনি 3 টি স্পেসের নিজস্ব প্রতিস্থাপনের সাথে আরও আটটি বাইট সংরক্ষণ করতে পারেন।
তিতাস

0

রুবি, 290 বাইট

$><<(gets.to_i%2<1?"xCeCdCnCcC_
c/Bc/Be|ABAAf/e|Af/Be|f|
b/cB/cBd|AbBb|A--Af|--Be/CBd|--d|
/iBAAcB|ACdBCAdBc/eBAf|":"xCeC
Bi/AAc/|Af/e|d/cBbCb/Af|
bBc/Bc/d|Ab/b|A--Af|--/eBc/d|--d|
cB/cB/e|A/AACdBCAC|fB/e|Cc_|_").gsub(?C,'__').tr(?B,?\\).gsub(?A,'c|').gsub(/[a-z]/){|e|' '*(e.ord-97)}

সম্ভবত একটি দুর্বল এবং অসম্ভব এন্ট্রি। মূলত একটি খুব সাধারণ (হস্তশিল্প) সংক্ষেপণ যেখানে ছোট হাতের অক্ষর বলতে বোঝায় যে অনেকগুলি স্পেস (আসলে অর্ড (চি) - 'এ' স্পেস) এবং বড় হাতের অক্ষরগুলি এমন কিছু সাধারণ পদ যা কয়েকটি বাইট সংরক্ষণ করে।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.