কোনও রাশিয়ান ক্রিপ্টোগ্রাফিক মানটি খুব কাঠামোগত তা প্রমাণ করে


92

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

unsigned char pi[] = {
    252,238,221,17,207,110,49,22,251,196,250,218,35,197,4,77,
    233,119,240,219,147,46,153,186,23,54,241,187,20,205,95,193,
    249,24,101,90,226,92,239,33,129,28,60,66,139,1,142,79,
    5,132,2,174,227,106,143,160,6,11,237,152,127,212,211,31,
    235,52,44,81,234,200,72,171,242,42,104,162,253,58,206,204,
    181,112,14,86,8,12,118,18,191,114,19,71,156,183,93,135,
    21,161,150,41,16,123,154,199,243,145,120,111,157,158,178,177,
    50,117,25,61,255,53,138,126,109,84,198,128,195,189,13,87,
    223,245,36,169,62,168,67,201,215,121,214,246,124,34,185,3,
    224,15,236,222,122,148,176,188,220,232,40,80,78,51,10,74,
    167,151,96,115,30,0,98,68,26,184,56,130,100,159,38,65,
    173,69,70,146,39,94,85,47,140,163,165,125,105,213,149,59,
    7,88,179,64,134,172,29,247,48,55,107,228,136,217,231,137,
    225,27,131,73,76,63,248,254,141,83,170,144,202,216,133,97,
    32,113,103,164,45,43,9,91,203,155,37,208,190,229,108,82,
    89,166,116,210,230,244,180,192,209,102,175,194,57,75,99,182,
};

unsigned char p(unsigned char x) {
     return pi[x];
}

কি p

pদুটি রাশিয়ান ক্রিপ্টোগ্রাফিক মানের একটি উপাদান, হ্যাশ ফাংশন স্ট্রিবগ এবং ব্লক সাইফার কুজনিচিক । ইন এই নিবন্ধটি (এবং ISO সভাগুলোতে), এই আলগোরিদিম ডিজাইনার দাবি করেন যে তারা অ্যারে উত্পন্ন piর্যান্ডম 8-বিট একাধিক বিন্যাসন অবচয় দ্বারা।

"অসম্ভব" বাস্তবায়ন

আছে 256!21684 বিটগুলিতে 16 2 1684 অনুমান। অতএব, প্রদত্ত এলোমেলো অনুক্রমের জন্য, এমন একটি প্রোগ্রাম যা এটি বাস্তবায়ন করে তার 1683 বিটের চেয়ে কম বিট প্রয়োজন হবে না বলে আশা করা যায় না।

তবে, আমরা একাধিক অস্বাভাবিক ছোট বাস্তবায়ন পেয়েছি (যা আমরা এখানে তালিকাবদ্ধ করি ), উদাহরণস্বরূপ নিম্নলিখিত সি প্রোগ্রাম:

p(x){unsigned char*k="@`rFTDVbpPBvdtfR@\xacp?\xe2>4\xa6\xe9{z\xe3q5\xa7\xe8",l=0,b=17;while(--l&&x^1)x=2*x^x/128*285;return l%b?k[l%b]^k[b+l/b]^b:k[l/b]^188;}

যার মধ্যে কেবল 158 টি অক্ষর রয়েছে এবং এটি 1264 বিটের মধ্যে ফিট করে। এটি কাজ করে তা দেখতে এখানে ক্লিক করুন

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

রেফারেন্স বাস্তবায়ন

পূর্ববর্তী সি কোডটির আরও পঠনযোগ্য সংস্করণটি হ'ল:

unsigned char p(unsigned char x){
     unsigned char
         s[]={1,221,146,79,147,153,11,68,214,215,78,220,152,10,69},
         k[]={0,32,50,6,20,4,22,34,48,16,2,54,36,52,38,18,0};
     if(x != 0) {
         unsigned char l=1, a=2;
         while(a!=x) {
             a=(a<<1)^(a>>7)*29;
             l++;
         }
         unsigned char i = l % 17, j = l / 17;
         if (i != 0) return 252^k[i]^s[j];
         else return 252^k[j];
     }
     else return 252;
}

সারণীটি kএমন যে k[x] = L(16-x), যেখানে Lঅর্থে লিনিয়ার এটি L(x^y)==L(x)^L(y)এবং যেখানে সি এর মতো, ^এক্সওআরকে বোঝায়। তবে আমরা আমাদের বাস্তবায়ন সংক্ষিপ্ত করার জন্য এই সম্পত্তিটির উত্তোলন করতে পরিচালনা করি না। আমরা কোনও কাঠামো সম্পর্কে সচেতন নই যাতে sএটি একটি সহজ বাস্তবায়ন করতে পারে --- এর আউটপুট সবসময় সাবফিল্ডে থাকে, অর্থাত্ s[x]16=s[x] যেখানে সীমাবদ্ধ ক্ষেত্রটিতে ক্ষয়ক্ষতি সম্পন্ন হয়। অবশ্যই, আপনার যদি কোনও সন্ধান করা sউচিত তবে আপনি একটি সহজ অভিব্যক্তি ব্যবহার করতে একেবারেই মুক্ত !

থিম লুপটি 256 টি উপাদান সহ সসীম ক্ষেত্রে একটি পৃথক লোগারিদমের মূল্যায়নের সাথে সম্পর্কিত। এটি একটি সাধারণ ব্রুট-ফোর্স অনুসন্ধানের মাধ্যমে কাজ করে: ডামি ভেরিয়েবলটি aসীমাবদ্ধ ক্ষেত্রের জেনারেটর হিসাবে সেট করা থাকে এবং ফলাফলটি সমান না হওয়া পর্যন্ত এটি এই জেনারেটরের দ্বারা গুণিত হয় x। যখন এটি হয়, আমাদের এটির lস্বতন্ত্র লগ x। এই ফাংশনটি 0 তে সংজ্ঞায়িত করা হয়নি, তাই বিশেষ ifবিবৃতিটি বয়ান সম্পর্কিত।

XF2[X]X8+X4+X3+X2+1unsigned charaa=(a<<1)^(a>>7)*(256^29)aintl=1,a=2l=255x

পূর্ববর্তী সংক্ষিপ্ত বাস্তবায়নটি পেতে আমাদের বেশিরভাগ অপ্টিমাইজেশনের একটি লিখনআপ সহ আরও আরও বিশদ আমাদের কাগজেp উপস্থাপন করা হয়েছে ।

বিধি

এমন কোনও প্রোগ্রামের প্রস্তাব করুন যা ফাংশনটি p1683 বিটেরও কম প্রয়োগ করে । প্রোগ্রামটি যত খাটো হবে তত বেশি অস্বাভাবিক, প্রদত্ত ভাষার জন্য আরও খাটো। যদি আপনার ভাষাতে কুজনিফিক, স্ট্রিবগ বা বিল্টিন pহিসাবে উপস্থিত হয় তবে আপনি সেগুলি ব্যবহার করতে পারবেন না।

আমরা সর্বোত্তম বাস্তবায়ন নির্ধারণ করতে যে মেট্রিকটি ব্যবহার করি তা হ'ল বাইটগুলিতে প্রোগ্রামের দৈর্ঘ্য। আমরা আমাদের একাডেমিক কাগজে বিট-লেংথ ব্যবহার করি তবে সরলতার জন্য আমরা এখানে বাইটগুলিতে লেগে থাকি।

আপনার ভাষা ফাংশন, আর্গুমেন্ট বা আউটপুট একটি স্পষ্ট ধারণা না থাকে, এনকোডিং নির্ধারণ করতে আপনার ব্যাপার, কিন্তু মান এনকোডিং মত ঠাট pi[x]যেমন xস্পষ্টত নিষিদ্ধ করা হয়।

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

যাইহোক, এই প্রশ্নের খসড়া তৈরি করার সময় তাঁর সহায়তার জন্য xnor ধন্যবাদ!


12
আমি আশা করি কেউ বীজে একটি উত্তর জমা দিয়েছেন।
রবিন রাইডার

6
একইভাবে, উদাহরণস্বরূপ, ব্রেইনফাক কোডটি যদি অক্ষর না থাকে তবে প্রতিটি চরিত্রের জন্য 3 বিটে স্কোর করা যায়? এবং 1683 bits at mostএকটি কঠোর বাধা [sic?] বা লক্ষ্য?
কেউ

31
" যদি অনুমতিটি কোনও এলোমেলো প্রক্রিয়ার আউটপুট ছিল (যেমন এটির ডিজাইনাররা দাবি করেছেন), তবে এই সংক্ষেপে একটি প্রোগ্রাম উপস্থিত থাকত না " আমি অসম্মতি জানাই (যদিও এটি চ্যালেঞ্জের পক্ষে কোনও বিষয় নয়)। যদি এটি একটি এলোমেলো প্রক্রিয়ার আউটপুট হয়, তবে এই জাতীয় প্রোগ্রামের অস্তিত্ব সম্ভাবনা কম ; বা এটি খুঁজে পাওয়া কঠিন হবে
লুইস মেন্ডো

8
@ গ্রিমি তখন বিবৃতিটি যা এই সংক্ষিপ্তটির অস্তিত্ব থাকবে না তা ধারণামূলক একটি (কোনও প্রোগ্রামিং নয়)। আপনার শর্তাদি ব্যবহার করে, এটি প্রোগ্রামিং জগতের নয়, খাঁটি গণিতের জগতের অন্তর্গত
লুইস মেন্ডো

7
si XOR si11,10,68,79,146,153,220,221i=1s0=0

উত্তর:


35

এএমডি Assembly৪ বিধানসভা (by 78 বাইট বা মেশিন কোডের 624 বিট)

uint8_t সাববাইট (uint8_t x) {
    uint8_t y, z;
    uint8_t s [] =
      {1,221,146,79,147,153,11,68,214,215,78,220,152,10,69};

    uint8_t কে [] =
      {0,32,50,6,20,4,22,34,48,16,2,54,36,52,38,18,0};

    যদি (এক্স) {
      (y = z = 1; (y = (y << 1) ^ ((y >> 7) * 29)) এর জন্য! = x; জেড ++);
      x = (z% 17);
      z = (জেড / 17);
      x = (এক্স)? কে [এক্স] ^ এস [জেড]: কে [জেড];
    }
    রিটার্ন এক্স ^ 252;
}

64-বিট x86 সমাবেশ

    ; এএমডি assembly৪ বিধানসভার 78 বাইট
    ; odzhan
    বিট 64

    % ifndef বিন
      গ্লোবাল সাববাইটেক্স
    %যদি শেষ

SubBytex:
    মুভ আল, 252
    jecxz L2; যদি (এক্স) {
    L0 কল করুন
k:
    ডিবি 0xfc, 0xdc, 0xce, 0xfa, 0xe8, 0xf8, 0xea, 0xde, 
    ডিবি 0xcc, 0xec, 0xfe, 0xca, 0xd8, 0xc8, 0xda, 0xee, 0xfc
S:
    ডিবি 0x01, 0xdd, 0x92, 0x4f, 0x93, 0x99, 0x0b, 0x44, 
    ডিবি 0xd6, 0xd7, 0x4e, 0xdc, 0x98, 0x0a, 0x45
L0:
    পপ আরবিএক্স
    মুভ আল, 1; y = 1
    সিডিকিউ; z = 0
এটি L1:
    inc dl; z- র ++,
    আল, আল যোগ করুন; y = y + y
    jnc $ + 4; কোনও ক্যারি না হলে এক্সওর এড়িয়ে যান
    xor আল, 29;
    সিএমপি আল, সিএল; যদি (y! = x) গোটো এল 1
    জেন এল 1    

    এক্সচজি ইক্স, এডিএক্স; eax = z
    সিডিকিউ; edx = 0
    মুভি ক্লা, 17; al = z / 17, dl = z% 17
    ডিভ এক্সেস

    মুভি ক্লা, [আরবিএক্স + রেক্স + 17]; cl = s [z]
    xlatb; আল = কে [জেড]
    পরীক্ষা dl, dl; যদি (x == 0) যাও এল 2
    জেজেড এল 2
    এক্সচজি ইক্স, এডিএক্স; al = x
    xlatb; আল = কে [এক্স]
    xor আল, সিএল; আল ^ = গুলি [জেড]
ও L2:
    পচান

-৪-বিট কোডটি পৃথক করা হয়েছে

00000000 বি0এফসি মুভ আল, 0xfc
00000002 67E348 jecxz 0x4d
00000005 E820000000 কল কিওয়ার্ড 0x2a
; কে [] = 0xfc, 0xdc, 0xce, 0xfa, 0xe8, 0xf8, 0xea, 0xde,
; 0xcc, 0xec, 0xfe, 0xca, 0xd8, 0xc8, 0xda, 0xee, 0xfc
; s [] = 0x01, 0xdd, 0x92, 0x4f, 0x93, 0x99, 0x0b, 0x44,
; 0xd6, 0xd7, 0x4e, 0xdc, 0x98, 0x0a, 0x45
0000002A 5B পপ আরবিএক্স
0000002B বি 001 মুভ আল, 0x1
0000002D 99 সিডিকিউ
0000002E FEC2 Inc dl
00000030 00C0 আল, আল যোগ করুন
00000032 7302 জেএনসি 0x36
00000034 341 ডি এক্সর আল, 0x1 ডি
00000036 38C8 cmp al, cl
00000038 75F4 jnz 0x2e
0000003A 92 xchg ইক্স, এডেক্স
0000003B 99 সিডিকিউ
0000003C বি 111 মুভি ক্লাल, 0x11
0000003E F7F1 ডিভ এক্স
00000040 8A4C0311 মুভ সিএল, [আরবিএক্স + রেক্স + 0x11]
00000044 ডি 7 এক্স্ল্যাটিবি
00000045 84D2 পরীক্ষা dl, dl
00000047 7404 জেড 0x4 ডি
00000049 92 xchg eax, edx
0000004A ডি 7 xlatb
0000004B 30C8 xor al, cl
0000004D সি 3 ret

32-বিট x86 সমাবেশ

    ; X86 সমাবেশের 72 বাইট
    ; odzhan
    বিট 32

    % ifndef বিন
      গ্লোবাল সাববাইটেক্স
      গ্লোবাল_সুবাইটেক্স
    %যদি শেষ

SubBytex:
_SubBytex:
    মুভ আল, 252
    jecxz L2; যদি (এক্স) {
    L0 কল করুন
k:
    ডিবি 0xfc, 0xdc, 0xce, 0xfa, 0xe8, 0xf8, 0xea, 0xde, 
    ডিবি 0xcc, 0xec, 0xfe, 0xca, 0xd8, 0xc8, 0xda, 0xee, 0xfc
S:
    ডিবি 0x01, 0xdd, 0x92, 0x4f, 0x93, 0x99, 0x0b, 0x44, 
    ডিবি 0xd6, 0xd7, 0x4e, 0xdc, 0x98, 0x0a, 0x45
L0:
    পপ ইবিএক্স
    মুভ আল, 1; y = 1
    সিডিকিউ; z = 0
এটি L1:
    inc edx; z- র ++,
    আল, আল যোগ করুন; y = y + y
    jnc $ + 4; কোনও ক্যারি না হলে এক্সওর এড়িয়ে যান
    xor আল, 29;
    সিএমপি আল, সিএল; যদি (y! = x) গোটো এল 1
    জেন এল 1    
    এক্সচজি ইক্স, এডিএক্স; al = z
    এএম 17; al | x = z% 17, আহ | z = z / 17
    মুভি ক্ল, আহ; cl = z
    সেমিওভ ইক্স, এক্সেক্স; যদি (x == 0) al = z অন্য আল = এক্স
    xlatb; আল = কে [জেড] বা কে [এক্স]
    জেজেড এল 2; যদি (x == 0) যাও এল 2
    xor আল, [ইবিএক্স + এক্সেক্স + 17]; কে [এক্স] ^ = কে [জেড]
ও L2:
    পচান

32-বিট কোড বিযুক্ত করে m

00000000 বি0এফসি মুভ আল, 0xfc
00000002 E345 জেকএক্সজেড 0x49
00000004 E820000000 কল ডেক্সড 0x29
; কে [] = 0xfc, 0xdc, 0xce, 0xfa, 0xe8, 0xf8, 0xea, 0xde,
; 0xcc, 0xec, 0xfe, 0xca, 0xd8, 0xc8, 0xda, 0xee, 0xfc
; s [] = 0x01, 0xdd, 0x92, 0x4f, 0x93, 0x99, 0x0b, 0x44,
; 0xd6, 0xd7, 0x4e, 0xdc, 0x98, 0x0a, 0x45
00000029 5 বি পপ ইবিএক্স
0000002A বি 001 মুভ আল, 0x1
0000002C 99 সিডিকিউ
0000002D 42 ইনকডেক্স
0000002E 00C0 আল, আল যোগ করুন
00000030 7302 জেএনসি 0x34
00000032 341D xor al, 0x1 ডি
00000034 38C8 cmp al, cl
00000036 75F5 jnz 0x2d
00000038 92 xchg ইক্স, এডিএক্স
00000039 ডি 411 এএম 0x11
0000003B 88E1 মুভি ক্লা, আহ
0000003D 0F44C1 সেমিভোজ ইক্স, ইক্সেক্স
00000040 ডি 7 এক্স্ল্যাটিবি
00000041 7404 জেড 0x47 47
00000043 32440B11 এক্স আল, [ইবিএক্স + এক্সএক্স + 0 এক্স 11]
00000047 সি 3 ret

1
চমৎকার উত্তর! যেহেতু ওপি বিট গণনাটির সন্ধান করছে, এই (85 বাইট) প্রতি বাইট 8 বিট ব্যবহার করে বা বাইট প্রতি 7 বিট ব্যবহার করে 595 বিট (সমস্ত অক্ষর ASCII হওয়ার কারণে সম্ভব) ব্যবহার করে 680 বিট আসে to আপনি যদি আরও বেশি সীমাবদ্ধ চরিত্রের সেটটিতে সংকুচিত হন তবে আপনি সম্ভবত আরও খাটো যেতে পারেন।
কুল্লব

1
পিপিসিজিতে আপনাকে স্বাগতম; প্রথম প্রথম সমাধান।
শেগি

9
@ কুলুব আমার বক্তব্যটি ছিল, এই উত্তরের কোডটি কেবল সি / এসেম্ব্লার যা সংকলিত হয়, তাই বাইট গণনাটি প্রদত্ত কোডের নয়, তবে সংকলিত কোডের। এবং এটি ASCII নয়।
আরবো

7
কেবল স্পষ্টতার জন্য, 84 বাইটগুলি একত্রিত হওয়ার পরে মেশিন কোডের আকার? যদি তাই হয় তবে শিরোনামটি আপডেট করতে হবে যাতে প্রতিস্থাপন করা যায় যে এটি কোনও সমাবেশের উত্তরের চেয়ে মেশিন কোডের উত্তর।
আলু 44

1
এবং বিটিডাব্লু, আপনাকে স্ট্যান্ডার্ড কলিং কনভেনশন ব্যবহার করতে হবে না; আপনি একটি কাস্টম কনভেনশন ব্যবহার করতে পারেন যেখানে আরবিএক্স কল-ক্লোবারযুক্ত, পুশ / পপ জন্য 2 বাইট সঞ্চয় করে। (এবং যেখানে uint8_tআরআরসিএক্সজেডের জন্য আরগগুলি -৪-বিটে শূন্য-প্রসারিত)। এছাড়াও, আপনি অবস্থান-নির্ভর কোড লিখলে আপনি টেবিলের ঠিকানাটি mov ebx, imm32একটি 6-বাইট call/ পরিবর্তে 5-বাইট দিয়ে একটি রেজিস্টারে রাখতে পারেন pop। অথবা এটি একটি হিসাবে ব্যবহার disp32মধ্যে mov al, [table + rax], কিন্তু যে হারাতে পারেন যেহেতু আপনি দুই xlatbএবং একটি movইতিমধ্যে। কল + পপ শেলকোড ট্রিকটি retযদিও এর পরে ডেটার সাথে বনাম 7-বাইট আরআইপি-আপেক্ষিক এলইএ জিতেছে ।
পিটার কর্ডেস

23

সিজে্যাম ,72 67 66 63 বাইট

ri{_2md142*^}es*]2#~Hmd{5\}e|Fm2b"Ý0$&Ü™ÖD�’
˜×EO“N".*Lts:^i

es* বর্তমান টাইমস্ট্যাম্প দ্বারা কিছু পুনরাবৃত্তি করে যা একটি বড় সংখ্যা এবং এটি শেষ হতে খুব বেশি সময় লাগবে take

প্রকৃতপক্ষে পরীক্ষারযোগ্য সংস্করণ, by৪ বাইট:

ri{_2md142*^}256*]2#~Hmd{5\}e|Fm2b"Ý0$&Ü™ÖD�’
˜×EO“N".*Lts:^i
00000000: 7269 7b5f 326d 6431 3432 2a5e 7d32 3536  ri{_2md142*^}256
00000010: 2a5d 3223 7e48 6d64 7b35 5c7d 657c 466d  *]2#~Hmd{5\}e|Fm
00000020: 3262 22dd 3024 2612 dc99 d644 0092 0b0a  2b".0$&....D....
00000030: 98d7 454f 934e 0122 2e2a 4c74 733a 5e69  ..EO.N.".*Lts:^i

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

সমস্ত অনলাইন চেষ্টা করুন!

এই কোড (লিনাক্স মেশিনে) চালাতে, আপনি লাইন যোগ করতে হবে en_US.ISO-8859-1 ISO-8859-1মধ্যে /etc/locale.genএবং চালানোর locale-gen। তারপরে আপনি ব্যবহার করতে পারেন:

LANG=en_US.ISO-8859-1 java -jar cjam.jar <source file>

অথবা আপনি এই সমতুল্য 72 বাইট ইউটিএফ -8 সংস্করণটি চেষ্টা করতে পারেন:

00000000: 7269 7b5f 326d 6431 3432 2a5e 7d32 3536  ri{_2md142*^}256
00000010: 2a5d 3223 7e48 6d64 7b35 5c7d 657c 466d  *]2#~Hmd{5\}e|Fm
00000020: 3262 22c3 9d30 2426 12c3 9cc2 99c3 9644  2b"..0$&.......D
00000030: 00c2 920b 0ac2 98c3 9745 4fc2 934e 0122  .........EO..N."
00000040: 2e2a 4c74 733a 5e69                      .*Lts:^i

ব্যাখ্যা

ri               e# Read input.
{_2md142*^}      e# Copy and divide by 2. If remainder is 1, xor 142.
es*]             e# Repeat a lot of times and wrap all results in an array.
2#               e# Find the first occurrence of 2, -1 if not found.
~                e# Increment and negate.
Hmd              e# Divmod 17. Both the quotient and remainder would be negated.
{5\}e|           e# If remainder = 0, return 5, quotient instead.
Fm2b             e# Subtract 15 from the remainder and expand in base 2.
                 e# In CJam, base conversion only applies to the absolute value.
"...".*          e# Filter 221, 48, 36, 38, 18 by the bits.
                 e# 221, the characters after 18
                 e#   and 18 itself in case quotient - 15 = -15 won't change.
Lt               e# Remove the item s[quotient] xor 220.
                 e# Quotient is 0, 5 or a negative integer from the end,
                 e#   which doesn't overlap with the previously filtered items.
s                e# Flatten, because some characters become strings after the process.
:^i              e# Reduce by xor and make sure the result is an integer.

স্ট্রিংয়ের অক্ষরগুলি হ'ল:

  • 221. নীচে দেখুন।
  • 48, 36, 38, 18. এটি প্রশ্নের ল এর বৈশিষ্ট্যগুলির উপর ভিত্তি করে কে এর রৈখিক ক্ষয়।
  • 220, অ্যারেগুলির ফিলার মান যখন কেবল অ্যারে কে ব্যবহৃত হয়।
  • অ্যারের এস জোর 220 বিপরীত হয়েছে, শেষ উপাদানটি বা বিপরীত হওয়ার আগে প্রথম উপাদান ব্যতীত, যা স্ট্রিংয়ের শুরুতে 221।

আপনি পাওয়ার সেট দিয়ে কি করবেন? পিএস আমি সম্ভবত বিপরীতে সীমাবদ্ধ ক্ষেত্র অপারেশন করার কৌশলটি চুরি করতে যাচ্ছি। খুব ঝরঝরে.
পিটার টেলর

@ পিটারটেলর আপনি [48 36 38 18] (বা এর বিপরীত) পাওয়ার সোর্সটি সর্বাধিক সরল অর্ডিংয়ের সাহায্যে অ্যারে কে পেতে পারেন এবং প্রতিটিটি জোর দিয়ে হ্রাস করতে পারেন। তবে এখন পর্যন্ত এই প্রশ্নে ব্যবহৃত গল্ফিং ভাষায়, কেবলমাত্র 05AB1E এর সঠিক ক্রম ছিল। জেলি এবং স্ট্যাক্স আপাতদৃষ্টিতে আমার ধারণাটি কী সোজা হওয়া উচিত সে সম্পর্কে আলাদা ধারণা ছিল।
জিমি 23013

আমি বর্তমানে 05AB1E এ আপনার উত্তর গল্ফ করার প্রক্রিয়াতে রয়েছি। আপনার স্ট্রিংয়ের জন্য পূর্ণসংখ্যা মানগুলি কী কী "Ý0$&Ü™ÖD�’\n˜×EO“N"?
কেভিন ক্রুইজসেন

@ কেভিনিক্রুজসেন আপনি কি তাদের অর্থ বা তাদের সংখ্যার মানগুলি (যা আপনি হেক্স ডাম্প থেকে দেখতে পেয়েছেন) সম্পর্কে জিজ্ঞাসা করছেন?
জিমি 23013

@ জিমি 23013 আহ, অবশ্যই .. হেক্স-ডাম্প সম্পর্কে ভুলে গেছেন ..
কেভিন ক্রুইজসেন

19

জেলি 71 59 বাইট

H^142ƊHḂ?Ƭi2d17U⁸⁴;$Ḣ?$CµṪạ⁴B¬T;;6ị“Œ0$&ØŀWð⁺Ṫ\ḢĠVı⁻¹]°Ẇ‘^/

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

সমস্ত সম্ভাবনা যাচাই করুন

এখন জিমি 23013 এর চতুর সিজেএম উত্তরটির পুনর্নির্মাণিত সংস্করণ ব্যবহার করে পুনরায় লিখিতভাবে লিখুন যাতে সেটিকেও উজ্জীবিত করতে ভুলবেন না! কেবল 472 বিট ব্যবহার করে (নিষ্পাপ পদ্ধতির 28.0%)। @ jimmy23013 এছাড়াও অন্য একটি বাইট সংরক্ষণ করেছে!

ব্যাখ্যা

ধাপ 1

         Ƭ        | Repeat the following until no new entries:
       Ḃ?         | - If odd:
     Ɗ            |   - Then following as a monad:
H                 |     - Halve
 ^142             |     - Xor 142
      H           |   - Else: Halve
          i2      | Index of 2 in this list

ধাপ ২

d17           | Divmod 17
          $   | Following as a monad:
   U          | - Reverse order
        Ḣ?    | - If head (remainder from divmod) non-zero:
    ⁸         |   - Then: left argument [quotient, remainder]
     ⁴;$      |   - Else: [16, quotient]
           C  | Complement (1 minus)
            µ | Start a new monadic chain

পর্যায় 3

Ṫ                   | Tail (Complement of remainder or quotient from stage 2)
 ạ⁴                 | Absolute difference from 16
   B                | Convert to binary
    ¬               | Not
     T              | Indices of true values
      ;             | Concatenate (to the other value from stage 2)
       ;6           | Concatenate to 6
         ị“Œ...Ẇ‘   | Index into [19,48,36,38,18,238,87,24,138,206,92,197,196,86,25,139,129,93,128,207]
                 ^/ | Reduce using xor

আসল পন্থা

জেলি , 71 66 বাইট

H^142ƊHḂ?Ƭi2d:j@“ÐḌ‘ɗ%?17ị"“p?Ä>4ɼḋ{zẉq5ʂċ¡Ḅ“`rFTDVbpPBvdtfR@‘^ƒ17

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

সমস্ত সম্ভাবনা যাচাই করুন

একটি monadic লিঙ্ক বা সম্পূর্ণ প্রোগ্রাম যা একটি একক যুক্তি নেয় এবং এর প্রাসঙ্গিক মান প্রদান করে pi[x]। এটি 536 বিট, তাই পাই এর নিষ্পাপ সঞ্চয়স্থানের এক তৃতীয়াংশের অধীনে।

জিমি 23013 এর সিজেএম উত্তরl থেকে সন্ধানের জন্য পদ্ধতিটি ব্যবহার করে 3 বাইট সংরক্ষণ করা হয়েছে তাই এটিরও নিশ্চিত হওয়া নিশ্চিত করুন!

ব্যাখ্যা

ধাপ 1

         Ƭ        | Repeat the following until no new entries:
       Ḃ?         | - If odd:
     Ɗ            |   - Then following as a monad:
H                 |     - Halve
 ^142             |     - Xor 142
      H           |   - Else: Halve
          i2      | Index of 2 in this list

ধাপ ২

         %?17  | If not divisible by 17
d              | - Then divmod 17
        ɗ      | - Else following as a dyad (using 17 as right argument)
 :             |   - Integer divide by 17
  j@“ÐḌ‘       |   - Join the list 15,173 by the quotient

পর্যায় 3

ị"“p...Ḅ“`...@‘     | Index into two compressed lists of integers using the output from stage 2 (separate list for each output from stage 2). The third output from stage 2 will be left untouched
               ^ƒ17 | Finally reduce using Xor and 17 as the first argument


15

সি (জিসিসি) , 157 148 140 139 বাইট

সি উদাহরণের তুলনায় পরিমিত উন্নতি।

l,b=17,*k=L"@`rFTDVbpPBvdtfR@";p(x){for(l=256;--l*~-x;)x=2*x^x/128*285;return l%b?k[l%b]^"\xcer?\4@6\xc8\t{|\3q5\xc7\n"[l/b]-b:k[l/b]^188;}

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

সি (জিসিসি) , 150 142 127 126 বাইট

এই একটি জিসিসি এবং এক্স 86 এবং ইউটিএফ -8 কুইর্কের উপর নির্ভর করে।

l,*k=L"@`rFTDVbpPBvdtfR@";p(x){for(l=256;--l*~-x;)x=2*x^x/128*285;x=l%17?k[l%17]^L"½a.ó/%·øjkò`$¶ù"[l/17]:k[l/17]^188;}

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

ধন্যবাদ -1 এবং কম অপরিজ্ঞাত আচরণের জন্য জাভিয়ারবনেটেনকে ধন্যবাদ।


10

05 এ বি 1 ই , 101 100 98 97 95 94 বাইট

U•α">η≠ε∍$<Θγ\&@(Σα•₅вV₁[<ÐX*Q#X·₁%Xžy÷Ƶ¹*₁%^₁%U}D17©%DĀiYsès®÷•¾#kôlb¸ù,-ó"a·ú•₅вë\Ƶ∞s®÷Y}sè^

-3 বাইটস @ গ্রিমিকে ধন্যবাদ ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

জেভিয়ার বনেটেনের সি ফাংশন (১১০6 বিট সংস্করণ) এখান থেকে , বর্ধিত একই উন্নতি @ সিইলিংক্যাট তার সি উত্তরে 3 বাইট সংরক্ষণ করার জন্য তৈরি করেছে , তাই নিশ্চিত হোন যে তাকে আপভোট করুন!

U                    # Store the (implicit) input in variable `X`
•α">η≠ε∍$<Θγ\&@(Σα• "# Push compressed integer 20576992798525946719126649319401629993024
 ₅в                  # Converted to base-255 as list:
                     #  [64,96,114,70,84,68,86,98,112,80,66,118,100,116,102,82,64]
   V                 # Pop and store this list in variable `Y`
                    # Push `i` = 256
 [                   # Start an infinite loop:
  <                  #  Decrease `i` by 1
   Ð                 #  Triplicate `i`
    X*Q              #  If `i` multiplied by `X` is equal to `i` (i==0 or X==1):
       #             #   Stop the infinite loop
  X·₁%               #  Calculate double(`X`) modulo-256
                     #  (NOTE: all the modulo-256 are to mimic an unsigned char in C)
  Xžy÷               #  Calculate `X` integer-divided by builtin integer 128,
      Ƶ¹*            #  multiplied by compressed integer 285,
         ₁%          #  modulo-256
  ^                  #  Bitwise-XOR those together
   ₁%                #  And take modulo-256 again
  U                  #  Then pop and store it as new `X`
 }D                  # After the loop: Duplicate the resulting `i`
   17©               # Push 17 (and store it in variable `®` without popping)
      %              # Calculate `i` modulo-17
       D             # Duplicate it
        Āi           # If it's NOT 0:
          Ysè        #  Index the duplicated `i` modulo-17 into list `Y`
          s®÷        #  Calculate `i` integer-divided by 17
          •¾#kôlb¸ù,-ó"a·ú•
                    "#  Push compressed integer 930891775969900394811589640717060184
           ₅в        #  Converted to base-255 as list:
                     #   [189,97,46,243,47,37,183,248,106,107,242,96,36,182,249]
         ë           # Else (`i` == 0):
          \          #  Discard the duplicated `i` modulo-17, since we don't need it
          Ƶ∞         #  Push compressed integer 188
          s®÷        #  Calculate `i` integer-divided by 17
          Y          #  Push list `Y`
         }s          # After the if-else: swap the integer and list on the stack
           è         # And index the `i` modulo/integer-divided by 17 into the list
            ^        # Then Bitwise-XOR the top two together
                     # (after which the top of the stack is output implicitly as result)

আমার এই 05AB1E টিপটি দেখুন (বিভাগগুলি কীভাবে বড় পূর্ণসংখ্যাগুলি সংকুচিত করতে হয়? এবং পূর্ণসংখ্যা তালিকা কীভাবে সংকোচিত করতে হয়? ) কেন •α">η≠ε∍$<Θγ\&@(Σα•তা বোঝার জন্য 20576992798525946719126649319401629993024; •α">η≠ε∍$<Θγ\&@(Σα•₅вহয় [64,96,114,70,84,68,86,98,112,80,66,118,100,116,102,82,64]; Ƶ¹হয় 285; •¾#kôlb¸ù,-ó"a·ú•হয় 930891775969900394811589640717060184; •¾#kôlb¸ù,-ó"a·ú•₅вহয় [189,97,46,243,47,37,183,248,106,107,242,96,36,182,249]; এবং Ƶ∞হয় 188


@ গ্রিমি ধন্যবাদ, আমি সর্বদা সংক্ষেপিত পূর্ণসংখ্যার তালিকার সাথে এই জাতীয় গল্ফটি ভুলে গিয়েছিলাম .. (পিএস: আপনি উভয় পক্ষের মন্তব্যে containing সমন্বিত কোডটি ঘিরে রাখতে পারেন I: '' কোড 'কোডের পরিবর্তে' ''।)
কেভিন ক্রুইজসেন

ওফস, গণ্ডগোল করা ফর্ম্যাটিংয়ের জন্য দুঃখিত। আমি ব্যাকটিকগুলি দ্বিগুণ করার বিষয়ে জানি, তবে আমি বুঝতে পারি না যে সংকুচিত তালিকায় একটি ব্যাকটিক ছিল। এছাড়াও: s^=> ^(এক্সওআরটি পরিবর্তনশীল)। আসলে, s^_ঠিক যেমন হয় না Q?
গ্রিমি

@ গ্রিমি ধন্যবাদ! আপনি সত্যই বলেছেন। লুপ থেকে বেরিয়ে আসার জন্য নিম্নলিখিত তিনটি জিনিসের একটি সত্যবাদী কিনা তা আমরা মূলত যাচাই করি i==0 || X==0 || X==1
কেভিন ক্রুইজসেন

10

স্ট্যাক্স , 65 64 62 59 58 বাইট

ç∙¼≥2▼Uó╤áπ╙º┐╩♫∟öv◘≥δ♦Θ╫»─kRWÑâBG")≥ö0╥kƒg┬^S ΔrΩ►╣Wü Ü╕║

এটি চালান এবং এটি ডিবাগ করুন

দুর্ভাগ্যক্রমে, এই প্রোগ্রামটি এমন কিছু নির্দেশাবলী ব্যবহার করে যা অভ্যন্তরীণভাবে কিছু হ্রাসকারী স্ট্যাক্স নির্দেশাবলী ব্যবহার করে। আমি তাদের বাস্তবায়ন আপডেট করতে ভুলে গেছি। এর ফলে কিছু উদ্দীপক সতর্কতা দেখা দেয়, তবে ফলাফলগুলি এখনও সঠিক।

এটি জিমি 23013 এর দুর্দান্ত উত্তর দ্বারা অনুপ্রাণিত । কিছু অংশ স্ট্যাক্সের জন্য আরও ভালভাবে পরিবর্তন করা হয়েছে।

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

মন্তব্যগুলির সাথে "পাঠযোগ্যতার" জন্য এই প্রোগ্রামটির আসকি উপস্থাপনাটি এখানে ফর্ম্যাট করা আছে।

{                       begin block
  2|%142*S              given n, calculate (n/2)^(n%2*142)
                         - this seems to be the inverse of the operation in the while loop
gu                      use block to generate distinct values until duplicate is found
                         - starting from the input; result will be an array of generated values
2I^                     1-based index of 2 in the generated values
17|%                    divmod 17
c{Us}?                  if the remainder is zero, then use (-1, quotient) instead
~                       push the top of the main stack to the input stack for later use
"i1{%oBTq\z^7pSt+cS4"   ascii string literal; will be transformed into a variant of `s`
./o{H|EF                interpret ascii codes as base-94 integer
                         - this is tolerant of digits that exceed the base
                        then encode big constant as into base 222 digits
                         - this produces an array similar to s
                         - 0 has been appended, and all elements xor 220
@                       use the quotient to index into this array
"jr+R"!                 packed integer array literal [18, 38, 36, 48]
F                       for each, execute the rest of the program
  ;                     peek from the input array, stored earlier
  v                     decrement
  i:@                   get the i-th bit where i is the iteration index 0..3
  *                     multiply the bit by value from the array literal
  S                     xor with result so far
                        after the loop, the top of the stack is printed implicitly

এটি চালান

সমস্ত ইনপুট 0..255 চালানোর জন্য পরিবর্তিত সংস্করণ


স্টেক্স Sশক্তি সেট জন্য আছে । আপনি [18 38 36 48], ইনডেক্সের পাওয়ার সেটটি পেতে এবং জোরে কমাতে পারেন। (আমি স্ট্যাক্সকে জানি না এবং আমি জানি যদিও এটি আরও কম হবে))
জিমি 23013

আমি মনে করি Sঅপারেটর দ্বারা উত্পাদিত সাবসেটগুলির জন্য স্ট্যাকসের ক্রমটি কাজ করার জন্য সঠিক ক্রমে নয়। উদাহরণস্বরূপ "abc"SJ(স্পেসের সাথে "অ্যাবিসি" -এর পাওয়ারসেট) "এ বি এ বি সি এসি বি বিসি সি" উত্পাদন করে।
পুনরাবৃত্ত

8

পাইথন 3 , 151 বাইট

f=lambda x,l=255,k=b'@`rFTDVbpPBvdtfR@':f(x*2^x//128*285,l-1)if~-x*l else[k[l%17]^(0x450a98dc4ed7d6440b99934f92dd01>>l//17*8&255),k[l//17]][l%17<1]^188

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

ক্রিয়াকলাপ কার্যকর করে এমন একটি ফাংশন। কোডটিতে কেবলমাত্র 7-বিট ASCII অক্ষর ব্যবহৃত হয়।

kপাইথন 3 বাইস্টেরিং হিসাবে এনকোডগুলি ^64মুদ্রণযোগ্য ব্যাপ্তিতে স্থানান্তরিত । বিপরীতে, sএকটি সংখ্যার ধ্রুবকের বেস -২6 digit সংখ্যা হিসাবে এনকোড করা হয় এবং অঙ্কগুলি হিসাবে বের করা হয় [number]>>[shift]*8&255। এটি sপ্রয়োজনীয় পলায়ন চরিত্রগুলির সংখ্যার কারণে এমনকি একটি স্ট্রিংতে এনকোডিংয়ের চেয়ে কম ছিল এমনকি এগুলি ^160হ্রাস করতে অনুকূল ift

বিযুক্ত-লগ গণনা পিছনের দিকে করা হয়। আপডেটটি x=x*2^x//128*285চক্রীয় গোষ্ঠীতে জেনারেট দ্বারা গুণিত অনুকরণ করে এগিয়ে যায়, যতক্ষণ না এটি পরিচয় না পৌঁছায় x=1। আমরা পৃথক লগটি l=255(চক্রের দৈর্ঘ্য) এ শুরু করি এবং এটি প্রতিটি পুনরাবৃত্তিকে হ্রাস করে। কেসটি পরিচালনা করতে x=0এবং এটিকে চিরতরে লুপ না করার জন্য, আমরা কখন সমাপ্ত করব l=0, যা নির্দিষ্ট করে x=0মানচিত্র তৈরি করে l=0


পাইথন 2 ভাল বাইটস্ট্রিং না পেয়ে হেরে যায়, তাই আমাদের করতে হবে map(ord,...)(আরবো এখানে একটি বাইট সংরক্ষণ করেছে)। এটি আমাদের পূর্ণসংখ্যা বিভাগের /পরিবর্তে ব্যবহার করতে দেয় //

পাইথন 2 , 156 বাইট

f=lambda x,l=255,k=map(ord,'@`rFTDVbpPBvdtfR@'):f(x*2^x/128*285,l-1)if~-x*l else[k[l%17]^(0x450a98dc4ed7d6440b99934f92dd01>>l/17*8&255),k[l/17]][l%17<1]^188

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


7

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

নোড.জেএস সংস্করণটির মতো, তবে ASCII সীমার বাইরে অক্ষর ব্যবহার করা।

f=(x,l=256,b=17,k=i=>"@`rFTDVbpPBvdtfR@¬p?â>4¦é{zãq5§è".charCodeAt(i))=>--l*x^l?f(x+x^(x>>7)*285,l):l%b?k(l%b)^k(b+l/b)^b:k(l/b)^188

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


জাভাস্ক্রিপ্ট (নোড.জেএস) ,  149  148 বাইট

জাভিয়ের বনেটেনের সি প্রয়োগের উপর ভিত্তি করে (যা এখানে উপস্থাপন করা হয়েছে )।

f=(x,l=256,b=17,k=i=>Buffer("@`rFTDVbpPBvdtfR@,p?b>4&i{zcq5'h")[~~i]|3302528>>i-b&128)=>--l*x^l?f(x+x^(x>>7)*285,l):l%b?k(l%b)^k(b+l/b)^b:k(l/b)^188

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

এনকোডিং

জাভিয়ের মূল উত্তরে, টেবিলগুলি s[]এবং k[]নিম্নলিখিত স্ট্রিংয়ে সংরক্ষণ করা হয়েছে:

"@`rFTDVbpPBvdtfR@\xacp?\xe2>4\xa6\xe9{z\xe3q5\xa7\xe8"
 \_______________/\__________________________________/
         k                         s

প্রথম 17 টি অক্ষর ASCII এর উপস্থাপনা k[i] XOR 64এবং পরবর্তী 15 টি অক্ষর ASCII এর উপস্থাপনা s[i-17] XOR 173, বা s[i-17] XOR 64 XOR 17 XOR 252

k[i] XOR 64s[i-17] XOR 173126128

আমরা যা পাই তা এখানে:

original value : 172 112  63 226  62  52 166 233 123 122 227 113  53 167 232
subtract 128?  :   1   0   0   1   0   0   1   1   0   0   1   0   0   1   1
result         :  44 112  63  98  62  52  38 105 123 122  99 113  53  39 104
as ASCII       : "," "p" "?" "b" ">" "4" "&" "i" "{" "z" "c" "q" "5" "'" "h"

11001001100100125801

128

| 3302528 >> i - b & 128

s

নোট: এটি কেবলমাত্র একটি পাশের নোট, উপরের উত্তরের সাথে সম্পর্কিত নয়।

s

{1,11,79,146}

console.log(
  [ 0b0001, 0b1100, 0b1000, 0b0100, 0b1001, 0b1010, 0b0010, 0b0110,
    0b1110, 0b1111, 0b0101, 0b1101, 0b1011, 0b0011, 0b0111
  ].map(x =>
    [ 1, 11, 79, 146 ].reduce((p, c, i) =>
      p ^= x >> i & 1 && c,
      0
    )
  )
)

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


4

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 141 বাইট

x=>{var k="@`rFTDVbpPBvdtfR@¬p?â>4¦é{zãq5§è";int l=256,b=17;for(;--l*x!=l;)x=2*x^x/128*285;return l%b>0?k[l%b]^k[b+l/b]^b:k[l/b]^188;}

কেবলমাত্র উদাহরণ সমাধানের একটি বন্দর, সি # তে পোর্ট করা হয়েছে।

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


3

পাইথন 3 , 182 বাইট

def p(x,t=b'@`rFTDVbpPBvdtfR@\xacp?\xe2>4\xa6\xe9{z\xe3q5\xa7\xe8',l=255,d=17):
 if x<2:return 252-14*x
 while~-x:x=x*2^(x>>7)*285;l-=1
 return(188^t[l//d],d^t[l%d]^t[d+l//d])[l%d>0]

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

পাইথন এখানে প্রথম পুরষ্কার জিততে পারে না, তবে এটি এখানে সেরা পাইথন প্রোগ্রামের 10 বাইট গল্ফ ।

পাইথন 3 , 176 বাইট

p=lambda x,l=255,t=b'@`rFTDVbpPBvdtfR@\xacp?\xe2>4\xa6\xe9{z\xe3q5\xa7\xe8',d=17:2>x<l>254and-14*x+252or(p(x*2^(x>>7)*285,l-1)if~-x else(188^t[l//d],d^t[l%d]^t[d+l//d])[l%d>0])

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

ল্যাম্বদা হিসাবে, এটি ছয় বাইট কম খাটো। এটি ব্যবহার করতে আমার কষ্ট দেয় if... elseতবে শর্ট সার্কিটের জন্য আমি আর কোনও বিকল্প দেখতে পাচ্ছি না, কিভাবে সম্ভাব্য উত্তর 0 হয় given

পাইথন 3 , 173 বাইট

p=lambda x,l=255,t=bytes('@`rFTDVbpPBvdtfR@¬p?â>4¦é{zãq5§è','l1'),d=17:2>x<l>254and-14*x+252or(p(x*2^(x>>7)*285,l-1)if~-x else(188^t[l//d],d^t[l%d]^t[d+l//d])[l%d>0])

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

এমনকি বাইটেও খাটো (যদিও আমি বিট সম্পর্কে নিশ্চিত নই, কারণ এটি আর খাঁটি ASCII নয়), ওভের সৌজন্যে।


\x..পালিয়ে যাওয়ার পরিবর্তে আক্ষরিক চরগুলি ব্যবহার করে 3 বাইট সংক্ষিপ্ত করুন
ওভস


ধন্যবাদ @ ধন্যবাদ! সম্ভবত বিট কাউন্টটি কিছুটা বাড়িয়েছে (যা ওপি-র ক্ষেত্রে সবচেয়ে গুরুত্বপূর্ণ তা নিশ্চিত নয়), তাই আমি আমার পুরানো উত্তরটিও রাখব।
আরবো

2

মরিচা , 170 163 বাইট

|mut x|{let(k,mut l)=(b"QqcWEUGsaASguewCQ\xacp?\xe2>4\xa6\xe9{z\xe3q5\xa7\xe8",255);while l*x!=l{x=2*x^x/128*285;l-=1}(if l%17>0{l+=289;k[l%17]}else{173})^k[l/17]}

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

এটি সিতে আমার দ্রবণের একটি বন্দর যা কিছুটা আলাদা স্ট্রিং সহ ১or xor করা দরকার না I আমি আশা করি বেশিরভাগ সমাধান "@` rFTDVbpPBvdtfR @ \ xacp? \ Xe2> 4 \ xa6 \ xe9 "স্ট্রিং ভিত্তিক {z \ xe3q5 \ xa7 \ xe8 "পাশাপাশি উন্নত করা যেতে পারে (কেবল স্ট্রিং পরিবর্তন করুন, জোর 17 টি সরান, এবং 188 এর পরিবর্তে xor 173)।

আমি শর্তসাপেক্ষে যোগ করে লুক-একটি সরিয়েছেন 17*17করতে l, যেমন আমরা (বেশী বা কম) এআরএম মেশিন কোড দ্রবণে করেনি।

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

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

আপডেট: ম্যানটওয়ার্কের পরামর্শ থেকে একটি বেনামে ফাংশন ব্যবহার করা হয়েছে।


1
পুনরাবৃত্তভাবে ডাকা ব্যতীত, বেনামে ফাংশন / ল্যাম্বডাস গ্রহণযোগ্য, সুতরাং আপনি শিরোনামে যেতে let p=পারেন এবং এটি গণনা করতে পারেন না। ;বেনামে কল হিসাবে এটি সম্পর্কে নিশ্চিত নয়: এটি অনলাইনে চেষ্টা করুন!
manatwork

1

05 এ বি 1 ই , 74 বাইট

₄FÐ;sÉiƵf^])2k>17‰Dθ_i¦16š}<(Rć16α2в≠ƶ0Kì6ª•5›@¾ÂÌLìÁŒ©.ðǝš«YWǝŠ•ƵŠвs<è.«^

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

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

F              # Loop 1000 times:
  Ð             #  Triplicate the current value
                #  (which is the implicit input in the first iteration)
   ;            #  Halve it
    s           #  Swap to take the integer again
     Éi         #  If it's odd:
       Ƶf^      #   Bitwise-XOR it with compressed integer 142
]               # Close the if-statement and loop
 )              # Wrap all values on the stack into a list
  2k            # Get the 0-based index of 2 (or -1 if not found)
    >           # Increase it by 1 to make it 1-based (or 0 if not found)
     17        # Take the divmod-17 of this
Dθ_i    }       # If the remainder of the divmod is 0:
    ¦16š        #  Replace the quotient with 16
         <      # Decrease both values by 1
          (     # And then negate it
R               # Reverse the pair
 ć              # Extract head; push head and remainder-list
  16α           # Get the absolute difference between the head and 16
     2в         # Convert it to binary (as digit-list)
               # Invert booleans (0 becomes 1; 1 becomes 0)
        ƶ       # Multiply all by their 1-based indices
         0K     # And remove all 0s
           ì    # And prepend this in front of the remainder-list
            6ª  # And also append a trailing 6
5›@¾ÂÌLìÁŒ©.ðǝš«YWǝŠ•
                # Push compressed integer 29709448685778434533295690952203992295278432248
  ƵŠв           # Converted to base-239 as list:
                #  [19,48,36,38,18,238,87,24,138,206,92,197,196,86,25,139,129,93,128,207]
     s          # Swap to take the earlier created list again
      <         # Subtract each by 1 to make them 0-based
       è        # And index them into this list
.«^             # And finally reduce all values by bitwise XOR-ing them
                # (after which the result is output implicitly)

আমার এই 05AB1E টিপটি দেখুন (বিভাগগুলি কীভাবে বড় পূর্ণসংখ্যাগুলি সংকুচিত করতে হয়? এবং পূর্ণসংখ্যা তালিকা কীভাবে সংকোচিত করতে হয়? ) কেন Ƶfতা বোঝার জন্য 142; •5›@¾ÂÌLìÁŒ©.ðǝš«YWǝŠ•হয় 29709448685778434533295690952203992295278432248, ƵŠহয় 239; এবং •5›@¾ÂÌLìÁŒ©.ðǝš«YWǝŠ•ƵŠвহয় [19,48,36,38,18,238,87,24,138,206,92,197,196,86,25,139,129,93,128,207]

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