বর্ধিত সাইফার


19

এই কাজটি বরং সহজ, এবং তিনটি স্বতন্ত্র "অপারেটর" অক্ষর ব্যবহার করে। আপনার কাজ, বর্ণের একটি সহজ ক্রম দেওয়া হয় ব্যবহার করে এটি এনকোড করার জন্য নিম্নলিখিত কাজটি <, >, *। আপনি উপরের বা ছোট হাতের অক্ষর দুটি ব্যবহার করতে বেছে নিতে পারেন, আপনাকে উভয়ই হ্যান্ডেল করতে হবে না।


সাইফার ব্যাখ্যা

সাইফারটি সহজ, আপনি *আপনার "জমা দিন" ফাংশনটি সহ, অক্ষর 1 থেকে শেষ চিঠি পর্যন্ত ট্রান্সভার করার জন্য ইনক্রিমেন্ট এবং হ্রাস ক্রিয়াকলাপগুলি ব্যবহার করছেন । "ইনক্রিমেন্ট" এর জন্য অপারেটরটি হবে >এবং "হ্রাস" হবে <

শব্দটি ব্যবহার করে একটি উদাহরণ adbc:

  • শব্দের প্রথম অক্ষর দিয়ে শুরু করুন, সেই বর্ণটি আউটপুট করুন। a
  • এর পরে, ব্যবহার করুন >এবং <(ব্রেইনফাকের মতো) পরবর্তী চিঠির বর্তমান চিঠিটি "নেভিগেট" করতে। চিঠিতে 1 দ্বারা a>'উত্থাপন' aকরতে হবে ba<ফলস্বরূপ zহ্রাস পাবে কারণ আপনি চিঠিটি কম করছেন (এটি মোড়ানো, আপনার সর্বদা সর্বনিম্ন সংখ্যার ক্রিয়াকলাপের ফলে দিকটি বেছে নিতে হবে)।
  • সঠিক ন্যূনতম সংমিশ্রণ <এবং >আউটপুট আউটপুট পরে একটি *নির্দেশ করে যে আমরা পরবর্তী অক্ষরে পৌঁছেছি।

এনকোড করার পদক্ষেপগুলি হ'ল adbc:

a          # a
a>>>*      # ad
a>>>*<<*   # adb
a>>>*<<*>* # adbc

উদাহরণ

এনকোড করার পদক্ষেপগুলি হ'ল aza:

a       # a
a<*     # az
a<*>*   # aza

আরও উদাহরণ:

"abcdef"    =  "a>*>*>*>*>*"
"zyaf"      =  "z<*>>*>>>>>*"
"zzzzzz"    =  "z*****"
"z"         =  "z"
"zm"        =  "z<<<<<<<<<<<<<*" or "z>>>>>>>>>>>>>*" (equidistant)
"zl"        =  "z>>>>>>>>>>>>*"
"alphabet"  =  "a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*"
"banana"    =  "b<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*" OR "b<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*"
"abcdefghijklmnopqrstuvwxyz" = "a>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*"
"abcdefz"   =  "a>*>*>*>*>*<<<<<<*"

বিধি

  • আমরা এনকোডিং ডিকোডিং নেই, তাই বিশৃঙ্খলা করবেন না যে আপ।
  • আপনি ধরে নিতে পারেন বার্তায় চিঠি [A-Z]বা [a-z]আপনার পছন্দ থাকবে।
  • *(ইজি $) বোঝাতে আপনি কোনও অক্ষর / সংখ্যা / সংরক্ষিত অক্ষর ব্যবহার করতে পারেন ।
  • আপনার অবশ্যই সমাপ্তি থাকতে হবে *, এটি পুনরাবৃত্তিগুলিতে অন্তর্ভুক্ত নয়।
  • আপনি কোনও খালি স্ট্রিং ধরে নাও নিতে পারেন তবে একটি একক অক্ষরই সম্ভব।
  • এটি যদি পরবর্তী অক্ষরের উভয় পথেই সামঞ্জস্যপূর্ণ হয় তবে আপনি একটি দিক চয়ন করতে পারেন।
  • এটি , সর্বনিম্ন বাইট-কাউন্ট জেতা।

দয়া করে আপনার উত্তরটি ব্যাখ্যা করুন, এটি অন্যকে এভাবে শিখতে সহায়তা করে।


কেবল পরিষ্কারভাবে বলতে গেলে, শেষ পরীক্ষার abcdefghijklmnopqrstuvwxyzকেসটি তার নিজস্ব ইনপুট উপস্থাপন করে না?
নিক ক্লিফোর্ড

1
@ নিকক্লিফফোর্ড হ্যাঁ
ম্যাজিক অক্টোপাস উরন

আমি মনে করি zlব্যবহার করা উচিত >
xnor

4
আপনি উদাহরণ পরীক্ষা করতে পারেন? alphabetআমার মতে a>>>>>>>>>>>*>>>>*<<<<<<<<*<<<<<<<*>*>>>*<<<<<<<<<<<*এবং এটি zlহওয়া উচিত z>>>>>>>>>>>>*এবং এর জন্য bananaএকটি দ্বিতীয় সমাধান উপস্থিত হওয়া উচিতb<*<<<<<<<<<<<<<*>>>>>>>>>>>>>*<<<<<<<<<<<<<*>>>>>>>>>>>>>*
জার্গ হালসারম্যান

@ এক্সনর সঠিক, থেকে একটি ম্যানুয়াল টাইপ ছিল zm। @ জোরজ ভাল ক্যাচগুলি, সেগুলির সবগুলি ঠিক করে দেওয়া ছিল ম্যানুয়াল প্রচেষ্টা।
ম্যাজিক অক্টোপাস উরান

উত্তর:


2

জেলি , 17 বাইট

OIżN$ẋ"@€⁾><;€⁶ṭḢ

*(স্পেস , বা একটি নতুন লাইন, একটি বাইট ওভার সাশ্রয় করে ”*) এর জায়গায় একটি স্থানের অক্ষর ব্যবহার করে ।

সাথে কাজ করে পারেন বড়হাতের শুধুমাত্র বা শুধুমাত্র ছোট হাতের অক্ষর ব্যবহার-ইনপুট।

এটি অনলাইন চেষ্টা করুন! অথবা একটি পরীক্ষা স্যুট (যেখানে সেই স্থানগুলি*পড়ার স্বাচ্ছন্দ্যের জন্যপোস্ট-প্রতিস্থাপন করা হয়) দেখুন।

কিভাবে?

OIżN$ẋ"@€⁾><;€⁶ṭḢ - Main link: string s          e.g. "adbc"
O                 - cast s to ordinals                [97,100,98,99]
 I                - incremental differences           [3,-2,1]
    $             - last two links as a monad:
   N              -     negate                        [-3,2,-1]
  ż               -     zip together                  [[3,-3],[-2,2],[1,-1]]
         ⁾><      - literal ['>','<']                 "><"
      "@€         - using reversed @arguments for €ach zip with("):
     ẋ            -     repeat (-n are like zeros)    [[">>>",""],["","<<"],[">",""]]
            ;€    - concatenate €ach with:
              ⁶   -     literal ' '                   [[">>>","",' '],["","<<",' '],[">","",' ']]
               ṭ  - tack to:
                Ḣ -     head of s (1st char)          [['a'],[">>>","",' '],["","<<",' '],[">","",' ']]
                  - implicit print   (" not printed:) "a>>> << > "

11

8086 মেশিন কোড, 70 68 67 বাইট

00000000  be 82 00 bf 43 01 57 31  d2 ac 3c 0d 74 2c 89 d1  |....C.W1..<.t,..|
00000010  88 c2 aa e3 f4 4f 28 c1  9f 88 e7 79 02 f6 d9 83  |.....O(....y....|
00000020  f9 0d 9f 76 05 83 e9 1a  f6 d9 30 fc 9e b0 3c 78  |...v......0...<x|
00000030  02 b0 3e f3 aa b0 2a aa  eb cf c6 05 24 b4 09 5a  |..>...*.....$..Z|
00000040  cd 21 c3                                          |.!.|
00000043

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

            |   org 0x100
            |   use16
be 82 00    |       mov si, 0x82        ; source = command line arguments
bf 43 01    |       mov di, result      ; destination = result
57          |       push di
31 d2       |       xor dx, dx          ; clear dx
ac          |   n:  lodsb               ; al = *si++
3c 0d       |       cmp al, 0x0d        ; end of input reached? (newline)
74 2c       |       je q                ; jump to exit in that case
89 d1       |   @@: mov cx, dx          ; store last char in cl
88 c2       |       mov dl, al          ; and store the current char in dl
aa          |       stosb               ; *di++ = al
e3 f4       |       jcxz n              ; skip encoding this char if cx == 0 (only happens for the first char)
4f          |       dec di              ; move di pointer back
28 c1       |       sub cl, al          ; take the difference between this char and the last one
9f          |       lahf                ; store flags from last subtraction in bh
88 e7       |       mov bh, ah
79 02       |       jns @f
f6 d9       |       neg cl              ; make sure cl is positive
83 f9 0d    |   @@: cmp cl, 13          ; which way is shorter?
9f          |       lahf                ; also store these flags
76 05       |       jbe @f
83 e9 1a    |       sub cl, 26          ; invert cl if we're going backwards
f6 d9       |       neg cl
30 fc       |   @@: xor ah, bh          ; xor saved flags together
9e          |       sahf                ; load flags register with the result
b0 3c       |       mov al, '<'
78 02       |       js @f               ; now the sign flag tells us which operator to use
b0 3e       |       mov al, '>'
f3 aa       |   @@: rep stosb           ; while (cx--) *di++ = al
b0 2a       |       mov al, '*'         ; mark the end with an asterisk
aa          |       stosb
eb cf       |       jmp n               ; repeat
c6 05 24    |   q:  mov byte [di], '$'  ; mark end of string
b4 09       |       mov ah, 0x09        ; dos function: print string
5a          |       pop dx              ; dx = string pointer
cd 21       |       int 0x21            ; syscall
c3          |       ret
            |   result rb 0

এই. এটি দুর্দান্ত beyond আপনি এটি খুব দ্রুত করেছেন, ডাং।
যাদু অক্টোপাস উরান

ধন্যবাদ। এটি যদিও বেশ তুচ্ছ সমাধান। কেবল 8086
ব্যবহারকারীর ৪৪34৩৩৩১

10

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

r,*s=input();p=r
for c in s:d=(ord(p)-ord(c)-13)%26-13;r+='<'*d+'>'*-d+'*';p=c
print(r)

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

ছোট হাতের বা বড় হাতের সঙ্গে কাজ করে Works

প্রোগ্রামটি rইনপুট স্ট্রিংয়ের অক্ষরগুলির পুনরাবৃত্ত হওয়ার সাথে সাথে আউটপুট স্ট্রিং তৈরি করে । এটি পূর্বের অক্ষরটিকে এটি হিসাবে সংরক্ষণ করে এবং নতুন চরিত্রের pথেকে বাড়ানোর জন্য বৃদ্ধি ক্রিয়াকলাপটি গণনা করে ।pc

অক্ষরের মধ্যে ব্যবধান হয় ord(c)-ord(p), এবং (ord(c)-ord(p)-13)%26-13এটা ব্যবধান 26 modulo লাগে [-13..12]। একটি নেতিবাচক ফলাফলের অর্থ এটি পদত্যাগ করা আরও খাটো এবং একটি ইতিবাচক ফলাফলের অর্থ পদক্ষেপ নেওয়া। এটি স্ট্রিনে >বা <চিহ্নের উপর নির্ভর করে রূপান্তরিত হওয়া দরকার । ব্যবহার absবা শর্তসাপেক্ষের পরিবর্তে , পাইগনের স্ট্রিং গুণটি নেতিবাচক s*nহলে খালি স্ট্রিং দেওয়ার সুবিধাটি আমরা গ্রহণ করি n। অভিব্যক্তিতে '<'*-d+'>'*d, ভুল স্বাক্ষরিত অংশটি অবদান রাখে না।

প্রাথমিক অবস্থাটি ইনপুটটিকে তার প্রথম চরিত্রের মধ্যে বিভাজন করে এবং বাকিটি পাইথন 3 এর আনপ্যাকিং দিয়ে পরিচালনা করা হয় r,*s=input()। প্রাথমিক অক্ষরটি স্ট্রিং তৈরি করতে, পাশাপাশি প্রাথমিক "পূর্ববর্তী" চরটি ব্যবহার করতে ব্যবহৃত হয়।

এই আনপ্যাকিংটি করতে পাইথন 3 এ স্যুইচ করার পরামর্শ দেওয়ার জন্য ওভসকে ধন্যবাদ।


6

পাইথন 3 , 110 93 বাইট

r,*s=input()
b=r
for a in s:d=(ord(a)-ord(b))%26;r+=['>'*d,'<'*(26-d)][d>13]+'*';b=a
print(r)

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


ওও ... নিম্ন এবং বড় উভয় ক্ষেত্রেই কাজ করে, দুর্দান্ত একটি (তবে আমি মনে করি আপনি এক বা অন্য ধরে ধরে বাইটস শেভ করতে পারেন)।
যাদু অক্টোপাস উরন

ব্যাখ্যা দয়া করে?
কমরেড স্পার্কলপনি

3

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

ইনপুট স্ট্রিং ক্ষেত্রে সংবেদনশীল।

s=>s.replace(/./g,(c,i)=>(d=~~s-(s=parseInt(c,36)),i)?'<><>'[k=d/13+2|0].repeat([d+26,-d,d,26-d][k])+'*':c)

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

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

এগুলি এই চ্যালেঞ্জের জন্য বরং প্রতিকূল আচরণ। সুতরাং, আমরা গণিতের কৌশলগুলিতে নির্ভর করার পরিবর্তে কোন সঠিক ক্ষেত্রে আমরা তা আরও ভালভাবে চিহ্নিত করব। (যার অর্থ এই নয় যে এই জাতীয় কৌশলগুলির অস্তিত্ব নেই, বরং আমি সেগুলি খুঁজে পেতে ব্যর্থ হয়েছি))

নীচে 4 সম্ভাব্য কেসগুলি বর্ণনা করার জন্য একটি সারণী দেওয়া হয়েছে, যেখানে dবর্তমান চরিত্র এবং পূর্ববর্তীটির মধ্যে স্বাক্ষরিত দূরত্ব রয়েছে:

d           | floor(d / 13) + 2 | direction | repeat
------------+-------------------+-----------+-------
-25 ... -14 |         0         |     <     | d + 26
-13 ... -1  |         1         |     >     | -d  
 +0 ... +12 |         2         |     <     | +d  
+13 ... +25 |         3         |     >     | 26 - d

পরীক্ষার মামলা


2

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

for($l=ord($r=($s=$argn)[0]);$x=ord($s[++$i]);$l=$x)$r.=str_pad("",($a=abs($n=$l-$x))<14?$a:26-$a,"><"[$n>0^$a>13])."*";echo$r;

Testcases

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

for($l=$r=($s=$argn)[0];$s[++$i];$l=$s[$i])$r.=str_pad("",$d=min($a=abs(ord($l)-ord($s[$i])),$b=26-$a),"><"[$d<$b^$l<$s[$i]])."*";echo$r;

Testcases


2

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

f=
s=>s.replace(/./g,(c,i)=>(p=(n+26-(n=parseInt(c,36)))%26,i?'<>'[p+3>>4].repeat(p>13?26-p:p)+'*':c),n=0)
<input oninput=o.textContent=f(this.value)><pre id=o>

s=>[...s].map(c=>(n=parseInt(c,36),p&&(p=(n+26-p)%26,s+='><'[p+3>>4].repeat(p>13?26-p:p)+'*'),p=n),s=s[p=0])&&s

আসল সংস্করণটি 111 বাইট নিয়েছিল আমি nকম্পিউটার করার সময় @ আরনাউল্ডের সেটিংয়ের কৌশলটি গ্রহণ করার আগে p, আমি মনে করি এর sপরিবর্তে সম্ভবত আরও একটি কৌশল ব্যবহার করা হয়েছে nতবে দেরি হচ্ছে তাই আমি বিরক্ত করব না:


2

হাস্কেল (ল্যাম্বডাবোট), 161 153 বাইট

w(s:n)=s:(join.snd$mapAccumL(ap(,).g)s n);g c n|q<-[c..'z']++['a'..c],(Just l,s)<-minimum$first(elemIndex n)<$>[(q,'>'),(reverse q,'<')]=(s<$[1..l])++"*"

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


ব্যাখ্যা:

-- Encode a single letter
g c n | q          <- [c..'z']++['a'..c]        -- The alphabet starting from letter c, looping around
      , (Just l,s) <- minimum                   -- Choose the smallest of ..
                    $ first(elemIndex n)        -- the index of the letter n ..
                  <$> [(q,'>'),(reverse q,'<')] -- from the alphabet q and its reverse

      = (s<$[1..l]) -- Repeat < or > the same number of times as the index of n ..
     ++ "*"         -- and append *

-- Encode the whole string
w (s:n) = s                                -- Yield the first char of the input
        : ( join . snd                     -- Concatinate the result of ..
          $ mapAccumL (\a b->(b,g a b))s n -- executing the g function on each letter of the input string ..
                                           -- except the first, passing the previous letter as the 'c' ..
                                           -- argument on each iteration
          )

2

এক্সেল ভিবিএ 130 বাইট

s="":p=Mid(s,1,1):For i=1 To Len(s)-1:b=Asc(Mid(s,i+1,1)):a=Asc(Mid(s,i,1)):p=p &String(abs(b-a),IIf(b>a,">","<"))&"*":Next:[a1]=p

এটি এক্সেল ভিবিএ ইমিডিয়েট উইন্ডো থেকে চালান।

ব্যাখ্যা:

লুপের জন্য সহজ যে স্ট্রিং ফাংশন সহ ">" বা "<" n সংখ্যাটি পুনরাবৃত্তি করতে পারে যেখানে এন i এবং i + 1 অক্ষরের স্ট্রিংয়ের মধ্যে ascii পার্থক্য।


2

জাভা 7-, 232 বাইট

class C{static void main(String[]a)throws Exception{int i=System.in.read(),j,d,c;p(i);while((j=System.in.read())>10){d=(j-i+26)%26;c=d>13?-1:1;while(d%26>0){d-=c;p(61+c);}p(42);i=j;}}static void p(int k){System.out.print((char)k);}}

বেশ তুচ্ছ সমাধান। অবহেলিত এবং মন্তব্য করেছেন:

class C {
    static void main(String[] a) throws Exception {
        int i = System.in.read(), j, d, c; // i is the last character. j is the current character. d is the difference. c is the direction (-1 is left, 1 is right)
        p(i); // print the starting character first
        while ((j = System.in.read()) > 10) { // keep going until a newline is hit (or an EOF/EOL for -1)
            d = (j - i + 26) % 26; // get the difference (always positive) by wrapping around
            c = d > 13 ? -1 : 1; // get the direction by finding which way is shorter, going right when it's a tie
            while (d % 26 > 0) { // keep going until the current character is reached
                d -= c; // reduce d in the right direction
                p(61 + c); // < is 60 = 61 + (-1), > is 62 = 61 - (-1)
            }
            p(42); // print an asterisk
            i = j; // set the current character to the new reference point
        }
    }

    static void p(int k) {
        System.out.print((char) k);
    }
}

2

সি, 170 বাইট

e(c){putchar(c);}i;m(a,b){i=b-a?a>b?b-a<14?b-a:-(a+26-b):a-b<14?-(a-b):b+26-a:0;while(i>0)e(62),i--;while(i<0)e(60),i++;}f(char*l){e(*l);while(l[1])m(*l,l[1]),e(42),l++;}

বিস্তারিত লাইভ

e(c){ putchar(c); } // encode

g(a,b) // obtain required transition
{
    return (b-a) // calculate distance

         ? (a > b // distance is non-zero

             // if b comes after a
             ? (b-a < 14 // if forward is a shorter path
                 ? b-a // go forward
                 : -(a+26-b)) // otherwise go backward

             // if b comes before a
             : (a-b < 14 // if backward is a shorter path
                 ? -(a-b) // go backward
                 : b+26-a)) // otherwise go forward

         : 0; // if distance is 0
}

// transition
i;m(a,b)
{
    // obtain required transition
    i=g(a,b);

    // encode forward transition
    while(i>0)e('>'), i--;

    // encode backward transition
    while(i<0)e('<'),i++;
}

// incremental cipher function
f(char*l)
{
    e(*l); // encode first character

    while(*(l+1)) // while next character is not END-OF-STRING
        m(*l,*(l+1)), // do transition from current to next character
        e('*'), // encode
        l++; // next
}

শীতল সমাধান। নিম্নলিখিতটি বুঝতে সম্ভবত সহজ, তবে 1 বাইট দীর্ঘ:#define x q<14?q:q+26 e(c){putchar(c);}i,q;m(a,b){q=b-a;i=q?(a>b?x:-x):0;while(i>0)e('>'),i--;while(i<0)e('<'),i++;}f(char*l){e(*l);while(*(l+1))m(*l,*(l+1)),e('*'),l++;}
মোরাকী

1
@ মোড়াকি থেক্স, তবে এটি একটি কোড-গল্ফ, তাই আমরা সর্বদা লক্ষ্য করি বাইট গণনা হ্রাস করা, যাইহোক আমি আমার কোড কীভাবে কাজ করে সে সম্পর্কে বিস্তারিত ব্যাখ্যা যুক্ত করেছি।
খালেদ.কে

2

জাভাস্ক্রিপ্ট (ES6), 140 128 129 111 113 বাইট

আমি অন্যান্য জেএস সমাধানগুলিতে পৃথক রুটে নেমেছি তবে এটি খুব ভালভাবে কার্যকর হয়নি - আমার এখন পর্যন্ত যা আছে তা এখানে:

f=

([x,...s])=>x+s.map(y=>`<><>`[r=(d=y[c=`charCodeAt`]()-x[c](x=y))/13+2|0].repeat([d+26,-d,d,26-d][r])+`*`).join``

i.addEventListener("input",()=>o.innerText=i.value&&f(i.value))
console.log(f("adbc"))
console.log(f("aza"))
console.log(f("abcdef"))
console.log(f("zyaf"))
console.log(f("zzzzzz"))
console.log(f("z"))
console.log(f("zm"))
console.log(f("zl"))
console.log(f("alphabet"))
console.log(f("banana"))
console.log(f("abcdefghijklmnopqrstuvwxyz"))
console.log(f("abcdefz"))
<input id=i>
<pre id=o>

  • স্ট্রাকটি ধ্বংস করার বিষয়ে লুকের পরামর্শের জন্য 12 বাইট সংরক্ষণ করা হয়েছে ।
  • চ্যালেঞ্জটির একটি ভুল পড়া ঠিক করতে 1 বাইট যুক্ত করা হয়েছে, যা আমি ভেবেছিলাম একটি অন্তর্নিহিত চূড়ান্ত মুদ্রণ অক্ষরের জন্য অনুমতি পেয়েছি।
  • লুকের আরও একটি পুনরায় লেখার জন্য আরও 18 বাইট সংরক্ষণ করা হয়েছে।
  • সংখ্যাগুলি বৈধ মুদ্রণের অক্ষর নয় বলে 2 বাইট যুক্ত করা হয়েছে।

আসল, 131 বাইট


1
([x,...s])=>x+s.map(...)12 বাইট সংরক্ষণ করুন মনে রাখবেন যে আপনার শেষের দিকে একটি মুদ্রণ চরিত্রও যুক্ত করা উচিত। আমি একটি নম্বর ব্যবহার করার পরামর্শ দিচ্ছি, যার `1`+1পরিবর্তে কেবল 2 বাইট খরচ হবে `*`
লুক

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

1
([x,...s])=>x+s.map(y=>'<><>'[r=(d=y[c='charCodeAt']()-x[c](x=y))/13+2|0].repeat([d+26,-d,d,26-d][r])+0).join``111 বাইটের জন্য
লুক

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

নাহ, আপনি এটি এডিট করতে পারেন I আমি একটি reduceসমাধান গল্ফ করার চেষ্টা করেছি , তবে এটি ১১ 115 বাইটে পরিণত হয়েছে।
লুক

2

সি ++, 210 190 বাইট

আমার প্রথম চেষ্টা করুন গল্ফিং এ!

#include<iostream>
int g(char*a){char k,j,d;std::cout<<*a;a++;for(;*a;a++){for(j=*(a-1),d=j-*a,k=d>0?d>13?62:60:d<-13?60:62;j!=*a;j+=k-61,j=j<97?122:j>122?97:j)std::cout<<k;std::cout<<'*';}}

কে কোন <,> বা * মুদ্রণের জন্য সংরক্ষণ করে। প্রথমে এটি অ্যারের প্রথম উপাদানটি কেবল মুদ্রণ করে তারপরে অ্যারের প্রথম থেকে শেষের উপাদানটির জন্য একটি লুপ চালায়। j পূর্ববর্তী উপাদানটিকে সংরক্ষণ করে এবং তারপরে তুলনা করে যদি জ এর সাথে * a দ্বারা <বা> কে কে <,> সেট করে এবং তারপরে কে মুদ্রণ করে তারপরে এই লুপটি চালান যতক্ষণ না j পি এর সমান হয়। তারপরে দ্বিতীয় লুপ প্রিন্টের প্রতিটি শেষের পরে।


2
সাইটে স্বাগতম! আমি যদি সঠিকভাবে স্মরণ করি তবে *p!=0এটি প্রতিস্থাপন করা যেতে পারে *p। আমি নিশ্চিত যে স্থানটিও char *aঅপ্রয়োজনীয়। এটির একটি সম্পূর্ণ উত্তর দেওয়ার জন্য আপনারও প্রয়োজন হবে #include <iostream>এবং using namespace std;(যদিও আমি মনে করি এটি কেবল যোগ করা সস্তা হতে পারে std::)।
গম উইজার্ড

2
সাইটে স্বাগতম! আমার মনে হয় আপনার অন্তর্ভুক্ত করা দরকার std::বা using namespace std;আপনার সম্ভবত #include <iostream>বাইট গণনাতেও আপনার প্রয়োজন হবে ।
ডিজেএমসিএমহেম

+1 করুন, তবে পূর্বোক্ত দুটি জিনিস ঠিক করুন, পিপিসিজিতে আপনাকে স্বাগতম;)। আপনি যখন চান্স পাবেন তখন টিআইও নেক্সাস ( tio.run/nexus ) এর আশেপাশের কয়েকটি ভাষার চেকআউট করুন ! ডেনিসের সাথে নিজেকে পরিচয় করিয়ে দিতে পারেন, তিনি এখানে প্রায় ভাসমান এক মূল বংশধর।
ম্যাজিক অক্টোপাস উরন

পরামর্শ এবং ভুলগুলি নির্দেশ করার জন্য সবাইকে ধন্যবাদ। আমি শীঘ্রই কোড আপডেট করব।
0x81915

1

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

¬sÇ¥v„<>y0›èyÄ×ðJ

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

ব্যাখ্যা

ব্যবহার >, <এবং <space>বোঝাতে বৃদ্ধি , হ্রাস , জমা

¬                  # get the first letter of the input string
 sǥ               # push a list of delta's of the character codes in the input string
    v              # for each delta
     „<>           # push the string "<>"
        y0›        # check if the delta is positive
           è       # use this to index into the string
            yÄ×    # repeat it abs(delta) times
               ðJ  # join to string with a space

এবং এটি একটি 3 ঘন্টা হারিয়েছে 😉।
ম্যাজিক অক্টোপাস উরন

1

হাস্কেল , 167 168 126 বাইট

f=fromEnum
r=replicate
a?b=mod(f a-f b-13)26-13
c#x=r(c?x)'<'++r(-c?x)'>'
s(c,s)x=(x,s++c#x++"*")
e(x:y)=x:snd(foldl s(x,[])y)

এখন xnor এর গাণিতিক সমাধান ব্যবহার করা হচ্ছে। স্ট্রিংটি e strকোথায় str :: Stringএনকোড করা হবে তা কল করুন ।


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