মালবালজ অনুবাদককে ম্যালব্লজকে সাধারণীকরণ করা


12

এই কার্যক্রমে আপনি এমন একটি প্রোগ্রাম / ফাংশন লিখবেন যা একটি নরমালাইজড মলবোলজ প্রোগ্রাম নেয় এবং ফলস্বরূপ মলবোলজ প্রোগ্রামটি আউটপুট করে । (এটি একটি গোপন সরঞ্জাম যা সমস্ত মালবোলজ প্রোগ্রামাররা ব্যবহার করছে!)

ইনপুট

একটি ডেটা স্ট্রাকচার যা (কোনওভাবে) একটি নরমালাইজড মলবোলজ প্রোগ্রামকে উপস্থাপন করে।

আউটপুট

একটি ডেটা স্ট্রাকচার যা ফলাফল প্রাপ্ত মালবোলজ প্রোগ্রামকে উপস্থাপন করে।

উদাহরণ

jpoo*pjoooop*ojoopoo*ojoooooppjoivvvo/i<ivivi<vvvvvvvvvvvvvoji
(=BA#9"=<;:3y7x54-21q/p-,+*)"!h%B0/.~P<<:(8&66#"!~}|{zyxwvugJ%

jjjj*<jjjj*<v
('&%#^"!~}{XE

jjjjjjjjjjjjjjjjjjjjjjj*<jjjjjjjjjjjjjjjjjjjjjjjj*<v
('&%$#"!~}|{zyxwvutsrqpnKmlkjihgfedcba`_^]\[ZYXWVT1|

কীভাবে রূপান্তর করা যায়

প্রতিটি চরিত্রের জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে নরমালাইজড ম্যালবোলজ প্রোগ্রামের উপর নজর রাখুন:

  1. এর *jpovi</সাথে সংশ্লিষ্ট অক্ষরের সাথে স্ট্রিংয়ের অক্ষরগুলি প্রতিস্থাপন করুন '(>DQbcu। (অর্থাৎ মানচিত্র *থেকে ', jথেকে (, ইত্যাদি।)

  2. তারপরে অক্ষরের ASCII কোড থেকে প্রোগ্রামের কাউন্টারটির বর্তমান অবস্থান (যেমন বর্তমানের পূর্বে অক্ষরের সংখ্যা) বিয়োগ করুন।

  3. যদি ফলাফলের ASCII কোডটি 33 এর চেয়ে কম হয় তবে এটি 94 দ্বারা বৃদ্ধি করুন এবং কমপক্ষে 33 না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

  4. ফলাফলটি অক্ষরে আউটপুট যুক্ত করুন।

বিধি

  • এটি একটি প্রতিযোগিতা; সংক্ষিপ্ত উত্তর জেতা
  • দয়া করে কোনও মানক ফাঁক নেই ।
  • ডিফল্ট I / O পদ্ধতি অনুমোদিত।
  • ইনপুটটিতে কেবল অক্ষর থাকবে *jpovi</

4
ইনপুটটিতে কি " *jpovi</" বর্ণের অক্ষর রয়েছে ?
জোয়েল

7
আমি বুঝতে পারি না "তবে, অবস্থানটি বিয়োগ করুন"। উপায়। আমি সম্ভবত এটি সিউডোকোড থেকে বের করতে পারি, তবে ব্যাখ্যাটি স্ব-অন্তর্ভুক্ত হওয়া উচিত।
xnor

1
" যদিও অস্থায়ী মলবোজের উপস্থাপনাগুলির ASCII কোডটি 33 এর চেয়ে কম, 94 দ্বারা চার্ট বৃদ্ধি করুন। " আপনি এর অর্থ কী? আমি কীভাবে চ্যালেঞ্জটি বুঝতে পারি: ১) মানচিত্রের অক্ষর; 2) ইউনিকোড মান রূপান্তর; ৩) প্রোগ্রামের কাউন্টারে প্রতিটি হ্রাস করুন (এখন আপনার কাছে আমরা 'অস্থায়ী মালবোলজ উপস্থাপনাগুলি' এএসসিআইআই কোড 'বলে থাকি); ৪) যদি কোনও মান ৩৩ এরও কম হয়, বৃদ্ধি হয় যা 94; 5) এই মানগুলিকে অক্ষরে রূপান্তর করুন। তবে এই পদ্ধতির ব্যবহার আউটপুট স্পষ্টভাবে সঠিক নয় .. সুতরাং আপনি 33 অক্ষরের চেয়ে দীর্ঘ ইনপুটগুলির জন্য এর অর্থ কী বোঝাতে পারেন?
কেভিন ক্রুইজসেন

1
a: if ascii_code(temporary Malbolge representation) < 33: char := char + 94; goto a;

1
মলবলেজে যে কেউ এই বিষয়গুলির মধ্যে একটি লিখতে পারে তাকে আমি আনন্দের সাথে অনুদান দেব :)
জেডিএল

উত্তর:


4

জেলি , 29 22 বাইট

Oị“%þV DCµ2®  ‘_JịØṖḊ¤

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

একটি জঘন্য লিঙ্কটি জেলি স্ট্রিংটিকে তার যুক্তি হিসাবে গ্রহণ করে এবং জেলি স্ট্রিংটি ফিরিয়ে দেয়।

2 জোড় বাঁচানোর জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!

ব্যাখ্যা

O                      | Convert to Unicode code points
 ị“%þV DCµ2®  ‘        | Index into compressed integer list [37, 31, 86, 32, 68, 67, 9, 50, 8, 32, 32] (note the 32s are never actually used because the input mod 11 will be one of 1,2,3,5,6,7,8,9)
               _J      | Subtract position of character in original string
                 ị   ¤ | Index into the following as a nilad:
                  ØṖ   | - Printable ASCII characters
                    Ḋ  | - With the first character (space) removed

..._J‘ịØṖḊ¤ একটি বাইট সংরক্ষণ করে।
জোনাথন অ্যালান

@ জোনাথন অ্যালান ধন্যবাদ, ভাল কল!
নিক কেনেডি

2
ওহ, এবং আমরা আমাদের অনুসন্ধানের ভিতরে বৃদ্ধি করতে পারি> << অন্য বাইট সংরক্ষণ:Oị“%þV DCµ2® ‘_JịØṖḊ¤
জোনাথন অ্যালান

6

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

p=0
for c in input():print(end=chr((b"de{#0ABT"["*jpovi<".find(c)]-p)%94+33));p+=1

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

মুদ্রণযোগ্য অক্ষরের সাথে বাইটস্ট্রিংয়ে কুরুচিপূর্ণ ছাপছাড়া অক্ষরগুলিকে প্রতিস্থাপনের জন্য @ জোয়েলের ধন্যবাদ জানাই।

আমি প্রতিস্থাপনের জন্য একটি মোড-চেইনের সন্ধান করছি "*jpovi<".find(c), তবে আমি মনে করি না যে এর চেয়ে কম ছোট একটি আছে এবং অ-নিষ্ক্রিয় জন্তু-বাহিনী অনুসন্ধান এখনও পর্যন্ত কিছু খুঁজে পায়নি।

82 বাইট

f=lambda s,p=0:s and chr((b"de{#0ABT"["*jpovi<".find(s[0])]-p)%94+33)+f(s[1:],p+1)

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


ছাপ ছাপানো ASCII অক্ষরগুলি আরও ভাল পাঠযোগ্যতার জন্য মুদ্রণযোগ্যগুলিতে তৈরি করার জন্য 94 দ্বারা অফসেট করা যেতে পারে।
জোয়েল

আপনি b"de{#0ABT"["*jpovi<".find(c)]যদি এর জন্য কোনও প্রোগ্রাম রেখে ম্যাপিং প্রতিস্থাপন করতে গণিত ফাংশন সন্ধান করতে পারেন।
জোয়েল

1
@ জোয়েল দুর্ভাগ্যক্রমে, আমি মনে করি কমপক্ষে আমার কাছে থাকা সরঞ্জামগুলির সাহায্যে ম্যাপিংটি একটি গাণিতিক ক্রিয়াকলাপের জন্য অনুসন্ধানের জায়গাটি অনেক প্রশস্ত। আমি শুধু মত মডিউল চেইন অনুসন্ধানের হয়েছে x%84%15%7ম্যাপিং ডান অর্ধেক জন্য, কিন্তু আমি মনে হয় আমি কিছু কোড আমি অন্তর্গত অনুসন্ধান করতে অন্য চ্যালেঞ্জ লিখেছেন জিনিসকে করতে *এবং /শর্তাবলী।
xnor

@ জোয়েল আমি ডান পাশের জন্য কোনও মোড-চেইন-শৈলী খুঁজে পাচ্ছি না %এবং *( //পাইথন 3 এ সম্ভবত এটির জন্য উপযুক্ত নয়)) আসলে, 7 টির মধ্যে 6 টির প্রথমটির সাথে কিছুই মিলেনি। আমি আশা করি এটি কাজ করবে কারণ মোটামুটি এনট্রপি অনুমান অনুযায়ী সম্ভবত যথেষ্ট পরিমাণে এক্সপ্রেশনগুলি% 7` এ শেষ হতে পারে তবে এটি খুব কাছে। এবং সম্ভবত এই চেইনগুলি সমানভাবে বিতরণ করা থেকে দূরে এমন আউটপুট দেয়, বিশেষত যেহেতু একবার দুটি ইনপুট একই মূল্যে পতিত হয়, আর কোনও ক্রিয়াকলাপ তাদের আলাদা করতে পারে না। আমি যে জিনিসটির চেষ্টা করছি সেটি বৃহত্তর অভিব্যক্তিটি অনুসন্ধান করার জন্য এখনও অনেক বেশি বোনা, তবে আপনার যদি কিছু ধারণা থাকে তবে এটির জন্য যান।
xnor

আমি মনে করি পছন্দমতো ইনপুটগুলির মতো সম্ভবত আরও ভাল অ্যালগরিদম প্রয়োজন map(ord, "*jpovi<")। আউটপুট ইনপুট অধিকাংশ জন্য অর্ডার সংরক্ষণ না করে তাহলে (অর্থাত f(m)>=f(n)যদি m>=n), কিছু সাবধানে ধ্রুবক জন্য crafted %এবং *সম্ভবত প্রয়োজন হয় এবং একটি বলপূর্বক অনুসন্ধান একটি ইতিবাচক ফলাফল উত্পাদ করার সম্ভাবনা কম।
জোয়েল

6

ম্যালবোলজ আনশ্যাকলড (20-ট্রিট রোটেশন ভেরিয়েন্ট), 7,784e6 বাইট

এই উত্তরের আকারটি সর্বোচ্চ পোস্টযোগ্য প্রোগ্রামের আকার (এহ) ছাড়িয়ে গেছে, সুতরাং কোডটি আমার গিটহাবের সংগ্রহস্থলে অবস্থিত

এটি কিভাবে চালানো যায়?

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

আমি যেটি খুঁজে পেতে পারি তার মধ্যে সেরাটি হ'ল স্থির 20-ট্রিট রোটেশন প্রস্থের রূপটি যা খুব ভাল সম্পাদন করে, প্রতি সেকেন্ডে 0,5 অক্ষর রূপান্তর করে

দোভাষীটিকে কিছুটা দ্রুত করার জন্য, আমি ম্যাথিয়াস লুটারের মালবোলজ আনশ্যাকল্ড দোভাষী থেকে সমস্ত চেক সরিয়েছি।

আমার পরিবর্তিত সংস্করণ প্রায় 6,3% দ্রুত চলতে পারে।

#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

const char* translation = "5z]&gqtyfr$(we4{WP)H-Zn,[%\\3dL+Q;>U!pJS72Fh"
        "OA1CB6v^=I_0/8|jsb9m<.TVac`uY*MK'X~xDl}REokN:#?G\"i@";

typedef struct Word {
    unsigned int area;
    unsigned int high;
    unsigned int low;
} Word;

void word2string(Word w, char* s, int min_length) {
    if (!s) return;
    if (min_length < 1) min_length = 1;
    if (min_length > 20) min_length = 20;
    s[0] = (w.area%3) + '0';
    s[1] = 't';
    char tmp[20];
    int i;
    for (i=0;i<10;i++) {
        tmp[19-i] = (w.low % 3) + '0';
        w.low /= 3;
    }
    for (i=0;i<10;i++) {
        tmp[9-i] = (w.high % 3) + '0';
        w.high /= 3;
    }
    i = 0;
    while (tmp[i] == s[0] && i < 20 - min_length) i++;
    int j = 2;
    while (i < 20) {
        s[j] = tmp[i];
        i++;
        j++;
    }
    s[j] = 0;
}

unsigned int crazy_low(unsigned int a, unsigned int d){
    unsigned int crz[] = {1,0,0,1,0,2,2,2,1};
    int position = 0;
    unsigned int output = 0;
    while (position < 10){
        unsigned int i = a%3;
        unsigned int j = d%3;
        unsigned int out = crz[i+3*j];
        unsigned int multiple = 1;
        int k;
        for (k=0;k<position;k++)
            multiple *= 3;
        output += multiple*out;
        a /= 3;
        d /= 3;
        position++;
    }
    return output;
}

Word zero() {
    Word result = {0, 0, 0};
    return result;
}

Word increment(Word d) {
    d.low++;
    if (d.low >= 59049) {
        d.low = 0;
        d.high++;
        if (d.high >= 59049) {
            fprintf(stderr,"error: overflow\n");
            exit(1);
        }
    }
    return d;
}

Word decrement(Word d) {
    if (d.low == 0) {
        d.low = 59048;
        d.high--;
    }else{
        d.low--;
    }
    return d;
}

Word crazy(Word a, Word d){
    Word output;
    unsigned int crz[] = {1,0,0,1,0,2,2,2,1};
    output.area = crz[a.area+3*d.area];
    output.high = crazy_low(a.high, d.high);
    output.low = crazy_low(a.low, d.low);
    return output;
}

Word rotate_r(Word d){
    unsigned int carry_h = d.high%3;
    unsigned int carry_l = d.low%3;
    d.high = 19683 * carry_l + d.high / 3;
    d.low = 19683 * carry_h + d.low / 3;
    return d;
}

// last_initialized: if set, use to fill newly generated memory with preinitial values...
Word* ptr_to(Word** mem[], Word d, unsigned int last_initialized) {
    if ((mem[d.area])[d.high]) {
        return &(((mem[d.area])[d.high])[d.low]);
    }
    (mem[d.area])[d.high] = (Word*)malloc(59049 * sizeof(Word));
    if (!(mem[d.area])[d.high]) {
        fprintf(stderr,"error: out of memory.\n");
        exit(1);
    }
    if (last_initialized) {
        Word repitition[6];
        repitition[(last_initialized-1) % 6] =
                ((mem[0])[(last_initialized-1) / 59049])
                    [(last_initialized-1) % 59049];
        repitition[(last_initialized) % 6] =
                ((mem[0])[last_initialized / 59049])
                    [last_initialized % 59049];
        unsigned int i;
        for (i=0;i<6;i++) {
            repitition[(last_initialized+1+i) % 6] =
                    crazy(repitition[(last_initialized+i) % 6],
                        repitition[(last_initialized-1+i) % 6]);
        }
        unsigned int offset = (59049*d.high) % 6;
        i = 0;
        while (1){
            ((mem[d.area])[d.high])[i] = repitition[(i+offset)%6];
            if (i == 59048) {
                break;
            }
            i++;
        }
    }
    return &(((mem[d.area])[d.high])[d.low]);
}

unsigned int get_instruction(Word** mem[], Word c,
        unsigned int last_initialized,
        int ignore_invalid) {
    Word* instr = ptr_to(mem, c, last_initialized);
    unsigned int instruction = instr->low;
    instruction = (instruction+c.low + 59049 * c.high
            + (c.area==1?52:(c.area==2?10:0)))%94;
    return instruction;
}

int main(int argc, char* argv[]) {
    Word** memory[3];
    int i,j;
    for (i=0; i<3; i++) {
        memory[i] = (Word**)malloc(59049 * sizeof(Word*));
        if (!memory) {
            fprintf(stderr,"not enough memory.\n");
            return 1;
        }
        for (j=0; j<59049; j++) {
            (memory[i])[j] = 0;
        }
    }
    Word a, c, d;
    unsigned int result;
    FILE* file;
    if (argc < 2) {
        // read program code from STDIN
        file = stdin;
    }else{
        file = fopen(argv[1],"rb");
    }
    if (file == NULL) {
        fprintf(stderr, "File not found: %s\n",argv[1]);
        return 1;
    }
    a = zero();
    c = zero();
    d = zero();
    result = 0;
    while (!feof(file)){
        unsigned int instr;
        Word* cell = ptr_to(memory, d, 0);
        (*cell) = zero();
        result = fread(&cell->low,1,1,file);
        if (result > 1)
            return 1;
        if (result == 0 || cell->low == 0x1a || cell->low == 0x04)
            break;
        instr = (cell->low + d.low + 59049*d.high)%94;
        if (cell->low == ' ' || cell->low == '\t' || cell->low == '\r'
                || cell->low == '\n');
        else if (cell->low >= 33 && cell->low < 127 &&
                (instr == 4 || instr == 5 || instr == 23 || instr == 39
                    || instr == 40 || instr == 62 || instr == 68
                    || instr == 81)) {
            d = increment(d);
        }
    }
    if (file != stdin) {
        fclose(file);
    }
    unsigned int last_initialized = 0;
    while (1){
        *ptr_to(memory, d, 0) = crazy(*ptr_to(memory, decrement(d), 0),
                *ptr_to(memory, decrement(decrement(d)), 0));
        last_initialized = d.low + 59049*d.high;
        if (d.low == 59048) {
            break;
        }
        d = increment(d);
    }
    d = zero();

    unsigned int step = 0;
    while (1) {
        unsigned int instruction = get_instruction(memory, c,
                last_initialized, 0);
        step++;
        switch (instruction){
            case 4:
                c = *ptr_to(memory,d,last_initialized);
                break;
            case 5:
                if (!a.area) {
                    printf("%c",(char)(a.low + 59049*a.high));
                }else if (a.area == 2 && a.low == 59047
                        && a.high == 59048) {
                    printf("\n");
                }
                break;
            case 23:
                a = zero();
                a.low = getchar();
                if (a.low == EOF) {
                    a.low = 59048;
                    a.high = 59048;
                    a.area = 2;
                }else if (a.low == '\n'){
                    a.low = 59047;
                    a.high = 59048;
                    a.area = 2;
                }
                break;
            case 39:
                a = (*ptr_to(memory,d,last_initialized)
                        = rotate_r(*ptr_to(memory,d,last_initialized)));
                break;
            case 40:
                d = *ptr_to(memory,d,last_initialized);
                break;
            case 62:
                a = (*ptr_to(memory,d,last_initialized)
                        = crazy(a, *ptr_to(memory,d,last_initialized)));
                break;
            case 81:
                return 0;
            case 68:
            default:
                break;
        }

        Word* mem_c = ptr_to(memory, c, last_initialized);
        mem_c->low = translation[mem_c->low - 33];

        c = increment(c);
        d = increment(d);
    }
    return 0;
}

ইহা কাজ করছে!

ইহা কাজ করছে


2
এটা শুধু উন্মাদ।
মিল্কওয়াই 90 ই

যাত্রীদের জন্য, বাইট গণনাটি 7.784 এমবি, 7.784 জিবি নয়। আমি কমাটিকে প্রথমে দশমিক পয়েন্টের চেয়ে হাজারে গ্রুপিং হিসাবে ব্যাখ্যা করেছি।
আলু 44

@ আলু 44 আমরা পোল্যান্ডে দশমিক বিভাজক হিসাবে কমা ব্যবহার করি, বিন্দু হিসাবে ডট ব্যবহার করা নিষিদ্ধ।
ক্রজিৎসটোফ সেজউইজিক

5

পাইথন 3 , 84 83 বাইট

f=lambda p,i=0:p and chr(126-(i+b"WV@:-zyg"["*jpovi<".find(p[0])])%94)+f(p[1:],i+1)

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

এটি বেশিরভাগই গণনাটি সহজ করার বিষয়ে একটি গণিতের সমস্যা, এবং গণিতটি শেষ করার পরে কিছু গল্ফ করা। কোডটির ungolfed সংস্করণ নীচে প্রদর্শিত হবে।

অবহেলিত, পুনরাবৃত্তিযোগ্য সংস্করণ

def convert(prog):
    offsets = dict(zip("*jpovi</", [87, 86, 64, 58, 45, 122, 121, 103]))  # ASCII encoded to "WV@:-zyg"
    output = ""
    for pos, c in enumerate(prog):
        output += chr(126-(offsets[c]+pos)%94)
    return output

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




3

05 এ বি 1 ই , 32 31 23 22 বাইট

žQ¦•4¡ˆ¶ü]₁η₃•₃вIÇèā-è

-8 বাইটস নিক কেনেডি'র জেলি উত্তরটির একটি বন্দর তৈরি করে , তাই তাকে উর্ধ্বতন নিশ্চিত করুন!
-১ বাইট @ গ্রিমিকে ধন্যবাদ।

অক্ষরের তালিকা হিসাবে আউটপুট।

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

ব্যাখ্যা:

   4¡ˆ¶ü]₁η₃•          # Push compressed integer 82767635194143615015
              ₃в        # Converted to base-95 as list: [1,36,30,85,0,67,66,8,49,7,0]
                IÇ      # Push the input and convert each character to its unicode value
                  è     # Index each into the list we created
                   ā    # Push an integer list in the range [0, length] 
                        # (without popping the list itself)
                    -   # Subtract it from the previous list
žQ                      # Push builtin with all printable ASCII characters,
  ¦                     # and remove the leading space
                     è  # Index the values of the list into the ASCII characters
                        # (after which the result is output implicitly)

আমার এই 05AB1E ডগা দেখুন (অধ্যায় ইপিএসে দক্ষিন কোরিয়ায় কিভাবে পূর্ণসংখ্যার কম্প্রেস কিভাবে? এবং কম্প্রেস পূর্ণসংখ্যা তালিকাতে কীভাবে? ) কেন বুঝতে •4¡ˆ¶ü]₁η₃•হয় 82767635194143615015এবং •4¡ˆ¶ü]₁η₃•₃вহয় [1,36,30,85,0,67,66,8,49,7,0]


•1ÃQWý₂Ýδ9•86в->•4¡ˆ¶ü]₁η₃•₃в
গ্রিমি

@ গ্রিमी থ্যাঙ্কস :)
কেভিন ক্রুইজসেন

2

পার্ল 5 ( -p), 53 , 51 বাইট

2 বাইট সংরক্ষণ করা, de{#0ABTপরিবর্তে '(>DQbcuযাতে 61আর প্রয়োজন হয় না ব্যবহার করে

y;*jpovi</;de{#0ABT;;s/./chr 33+(-"@-"+ord$&)%94/ge

Tio

প্রথম উত্তর ছিল

y;*jpovi</;'(>DQbcu;;s/./chr 33+(61-"@-"+ord$&)%94/ge

Tio


2

জাপট , 24 23 বাইট

নিকের জেলি সমাধান বন্দরের

;£EÅgYn" #T BA0 "cXc

চেষ্টা করে দেখুন

;£EÅgYn"..."cXc     :Implicit input of string
 £                  :Map each character X at 0-based index Y
; E                 :ASCII
   Å                :Slice of the first character (space)
    g               :Get character at index
     Y              :  Increment Y
      n             :  Subtract from
       "..."        :    Literal string (Codepoints: 32,35,29,84,32,66,65,7,48,6,32)
            c       :    Codepoint at index
             Xc     :      Codepoint of X

1

রেটিনা 0.8.2 , 50 বাইট

T`*j\p\ovi</`'(>DQbcu
.
$.`$* $&¶
+T`!p`~_p` .¶
¶

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

T`*j\p\ovi</`'(>DQbcu

প্রশ্নের বর্ণনায় বর্ণিত প্রতিলিপি তৈরি করুন। p(নীচে বর্ণিত) এবং পুনর্নবীকরণের oবিশেষ অর্থ Tরয়েছে যাতে এগুলি উদ্ধৃত করা দরকার।

.
$.`$* $&¶

প্রত্যেকটি চরিত্রকে তার নিজস্ব লাইনে তালিকাবদ্ধ করুন, তার সূচী অনুসারে বেশ কয়েকটি স্পেস আগে অর্থাৎ প্রোগ্রামের পাল্টাটি কী হবে

+T`!p`~_p` .¶

বারবার চক্রাকারে প্রতিটি লাইনের শেষ অক্ষরটি হ্রাস করুন, প্রতিটি স্থান পূর্ববর্তী স্থান মুছে ফেলুন, যতক্ষণ না সমস্ত জায়গার সমস্ত স্থান মুছে ফেলা হয়। pমুদ্রণযোগ্য হওয়া ASCII অর্থাত জন্য ব্রিদিং -~, তবে আমরা চাই !ম্যাপ ~যাতে প্রথম বর্ণান্তরিত হয়, এবং তারপর _ঘটায় ম্যাচে স্থান মুছে যাবে যখন অক্ষর বাকি একটি সময়ে এক চরিত্র কোড বর্ণান্তরিত দেখায়।

সমস্ত চরিত্র একসাথে ফিরে যোগ দিন।


1

কাঠকয়লা , 23 বাইট

⭆S§Φγμ⁻℅§ #{T BAe0d ℅ικ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। @ Arnauld এর জাভাস্ক্রিপ্ট উত্তরের পোর্ট। ব্যাখ্যা:

 S                      Input string
⭆                       Map over characters and join
                     ι  Current character
                    ℅   ASCII code
        §               Cyclically indexed into
          #{T BAe0d     Literal string ` #{T BAe0d `
       ℅                ASCII code
      ⁻                 Subtract
                      κ Current index
  §                     Cyclically indexed into
    γ                   Printable ASCII
   Φ                    Filtered on
     μ                  Inner index (i.e. skip initial space)
                        Implicitly print


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