আসুন কিছু "deciph4r4ng" করি


58

এই চ্যালেঞ্জে আপনার কাজটি একটি স্ট্রিং ডিক্রিফার করা। ভাগ্যক্রমে, অ্যালগরিদমটি বেশ সহজ: বাম থেকে ডানে পাঠ্য প্রতিটি সংখ্যার এন (0 থেকে 9) এর আগে N + 1 পজিশনের অক্ষরের সাথে প্রতিস্থাপন করতে হবে।

উদাহরণ

ইনপুট স্ট্রিংটি "Prog2am0in6"এভাবে ডিকোড করা হবে:

উদাহরণ

সুতরাং, প্রত্যাশিত আউটপুট হয় "Programming"

ব্যাখ্যা এবং বিধি

  • ইনপুট স্ট্রিংটিতে 32 - 126 একচেটিয়াভাবে ASCII অক্ষর থাকবে। আপনি ধরে নিতে পারেন যে এটি কখনই খালি হবে না।
  • মূল ডিকীফের্ড স্ট্রিংটি কোনও সংখ্যা না রাখার গ্যারান্টিযুক্ত।
  • একটি চরিত্রটি একবার ডিকোড হয়ে যাওয়ার পরে এটি পরবর্তী অঙ্কের দ্বারা উল্লেখ করা যেতে পারে। উদাহরণস্বরূপ, "alp2c1"হিসাবে ডিকোড করা উচিত "alpaca"
  • রেফারেন্সগুলি স্ট্রিংয়ের চারপাশে কখনই মোড়ানো হবে না: কেবলমাত্র পূর্ববর্তী অক্ষরগুলিই উল্লেখ করা যেতে পারে।
  • আপনি একটি পুরো প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন, যা ফলাফল মুদ্রণ করে অথবা ফলাফলকে আউটপুট করে।
  • এটি কোড গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

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

Input : abcd
Output: abcd

Input : a000
Output: aaaa

Input : ban111
Output: banana

Input : Hel0o W2r5d!
Output: Hello World!

Input : this 222a19e52
Output: this is a test

Input : golfin5 3s24o0d4f3r3y3u
Output: golfing is good for you

Input : Prog2am0in6 Puz0les7&1Cod74G4lf
Output: Programming Puzzles & Code Golf

Input : Replicants 4re3lik448ny3oth8r5mac6in8.8T64y'r371it9376a1b5n1fit7or2a1h2z17d.
Output: Replicants are like any other machine. They're either a benefit or a hazard.

আমরা কি একক অক্ষরের স্ট্রিংগুলির অ্যারে হিসাবে ইনপুটটি পেতে পারি? আমরা কি ধরে নিতে পারি যে সংখ্যাটি কখনই 9 এর বেশি হবে না?
fəˈnɛtɪk

@ fəˈnɛtɪk ইনপুট ফর্ম্যাটটি সম্পর্কে: আমি না বলব, যদি না এটি আপনার ভাষার জন্য একমাত্র গ্রহণযোগ্য ফর্ম্যাট। আমরা সংখ্যার চেয়ে একক সংখ্যা নিয়ে কাজ করছি । সুতরাং হ্যাঁ: এটি <= 9 হওয়ার গ্যারান্টিযুক্ত তবে আপনি একাধারে একাধিক অঙ্কের সম্মুখীন হতে পারেন।
আরনাউল্ড

চান 1bbab(প্রত্যাশিত আউটপুট সঙ্গে একটি বৈধ ইনপুট হতে abbab)? অন্য কথায়, রেফারেন্সগুলি স্ট্রিংয়ের চারপাশে মোড়ানো যায়?
লুক

@ লুক ভাল পয়েন্ট। না, 1bbabবৈধ নয়। আমি সে সম্পর্কে একটি স্পষ্টতা যোগ করেছি।
আর্নাউল্ড

উত্তর:


11

জেলি , 9 7 বাইট

~ịṭṭµ@/

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

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

~ịṭṭµ@/  Main link. Argument: s

    µ    Combine the four links to the left into a chain (arity unknown).
     @   Swap the chains arguments. This makes it dyadic.
      /  Reduce s by the chain with swapped arguments. It will be called with
         right argument r (the result of the previous call, initially the first 
         character) and left argument c (the next character of s).
~            Bitwise NOT of c. This maps a digit 'd' to ~d = -(d+1), but all 
             non-digit characters 'D' to 0.
  ṭ          Tack; append c to r.
 ị           Index; select the character of the result to the right at the
             index from the result to the left. Indexing is 1-based and modular,
             so 0 is the last character, -1 the second to last, etc.
   ṭ         Tack; append the resulting character to r.    

13

জাভা 7, 81 80 বাইট

void a(char[]a){for(int i=0;++i<a.length;)if(a[i]>47&a[i]<58)a[i]=a[i-a[i]+47];}

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

অ্যান্ডার্স টর্নব্ল্যাডকে ধন্যবাদ 1 বাইট সংরক্ষিত । প্রথম অক্ষরটি একটি অঙ্ক হতে পারে না তাই এটি পরীক্ষা করার দরকার নেই অর্থাত আমাদের সমাপ্তির শর্তটি পরীক্ষা করার আগে আমরা প্রিনক্রেনমেন্ট করতে পারি।


2
যেহেতু প্রথম চরটিতে কোনও অঙ্ক থাকতে পারে না তাই আপনাকে এটি পরীক্ষা করতে হবে না। অতএব, আপনার লুপটি for(int i=0;++i<a.length;){পরিবর্তে একটি চর সংরক্ষণ করতে পারে ।
অ্যান্ডার্স টর্নব্ল্যাড

12

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

o#c|c>'/',c<':'=o!!read[c]:o|1<2=c:o
reverse.foldl(#)[]

ব্যবহারের উদাহরণ: reverse.foldl(#)[] $ "Prog2am0in6 Puz0les7&1Cod74G4lf"-> "Programming Puzzles & Code Golf"এটি অনলাইন চেষ্টা করুন!

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


1
বাহ, আমি এই সঠিক সমাধানটি লিখেছি তবে এটি পোস্ট করার ক্ষেত্রে আমি ধীর ছিলাম :) ভাল, কমপক্ষে এখন আমি জানি এটি একটি ভাল ছিল, +1
লিও

11

সি, 46 বাইট

f(char*s){for(;*s++;)*s=s[(*s-52)/6?0:47-*s];}

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


সি,  52   49  48 বাইট

বাইট সংরক্ষণের জন্য @ l4m2 কে ধন্যবাদ!

f(char*s){for(;*s++;)*s>47&*s<58?*s=s[47-*s]:0;}

সরাসরি ইনপুট স্ট্রিং সম্পাদনা করে।

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

বিকল্প 50 বাইট সংস্করণ:

f(char*s){for(;*s++;)*s=abs(*s-57)>9?*s:s[47-*s];}

পুনরাবৃত্ত সংস্করণ, 48 বাইট:

f(char*s){*s>47&*s<58?*s=s[47-*s]:0;*s++&&f(s);}

9

05 এ বি 1 , 11 বাইট

vydiÂyèëy}J

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

ব্যাখ্যা

v            # for each character y in input
 ydi         # if y is a digit
    Â        #    push a reversed copy of the string we've built up so far
     yè      #    push the character at index y in the reversed string
       ë     # else
        y    #    push y
         }   # end if
          J  # join stack to a single string
             # output top of the stack at the end of the loop

আপনি ইতিমধ্যে শুরু করার আগে আরও প্রায়শই উত্তর দিয়েছেন কিনা তা দেখার জন্য আমার সত্যিই পরীক্ষা করা দরকার।
ম্যাজিক অক্টোপাস উরন

@ কারাসোকম্পিউটিং: আপনি এখনও আমার ব্যবহারের চেয়ে আরও ভাল কৌশল সম্পর্কে ভাবতে পারেন;)
এমিগানা

7

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

f=x=>/\d/.test(x)?f(x.replace(/\d/,(m,o)=>x[o+~m])):x

7 বাইট সংরক্ষণ করা f 7nɛtɪk ধন্যবাদ।

f=x=>/\d/.test(x)?f(x.replace(/\d/,(m,o)=>x[o+~m])):x

console.log(f("Prog2am0in6"));
console.log(f("abcd"));
console.log(f("a000"));
console.log(f("ban111"));
console.log(f("Hel0o W2r5d!"));
console.log(f("this 222a19e52"));
console.log(f("golfin5 3s24o0d4f3r3y3u"));
console.log(f("Prog2am0in6 Puz0les7&1Cod74G4lf"));
console.log(f("Replicants 4re3lik448ny3oth8r5mac6in8.8T64y'r371it9376a1b5n1fit7or2a1h2z17d."));


.চর্যাট (...) এর সাথে প্রতিস্থাপন করা যেতে পারে [...] 7 বাইটের সঞ্চয়ের জন্য
fəˈnɛtɪk

x.charAt (...) এক্স এর সমতুল্য [...]
fəˈnɛtɪk

@ ফেনাটিক ইয়েপ, আমি ভেবেছিলাম আগে চেষ্টা করেছি তবে এটি একটি ত্রুটি ছুঁড়েছে। ধন্যবাদ!
টম

1
o-m-1সঙ্গে প্রতিস্থাপন করা যেতে পারে o+~m
নীল

2
যেহেতু চ পুনরাবৃত্তভাবে বলা হয়, প্রোগ্রামের অক্ষর গণনা অবশ্যই f=অংশটি অন্তর্ভুক্ত করা উচিত , সুতরাং এটি 52 বাইট নয়, 52.
ব্যবহারকারী 5090812

5

রেটিনা , 37 বাইট

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

\d
$*«»
r1+`(?<=(.)(?<-2>.)*)(«)*»
$1

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

ব্যাখ্যা

\d
$*«»

প্রতিটি ডিজিটের d কে d « এর সাথে প্রতিস্থাপন করুন তারপরে একটি করে »। আমাদের পরেরটি ক প্রয়োজন হয়) ডি = 0 এবং খ) সংলগ্ন অঙ্কগুলির মধ্যে বিভাজক হিসাবে স্বীকৃত অবস্থানগুলিতে সক্ষম হতে হবে ।

r1+`(?<=(.)(?<-2>.)*)(«)*»
$1

বারবার ( +) প্রথম লাইনের ডান থেকে বামে ( r) বামে মিশ্রিত করুন এবং তারপরে বাম-সর্বাধিক ম্যাচটি ( 1) দ্বিতীয় লাইনের বিকল্পের সাথে প্রতিস্থাপন করুন।

রেজেক্স নিজেই আমাদের এখনকার «অবিচ্ছিন্ন অঙ্কগুলির একটির সাথে মেলে এবং গ্রুপ 2 এর সংখ্যাকে গণনা করে তারপরে চেহারাটি পরে 1 গ্রুপে রেফার-টু চরিত্রটি ক্যাপচার করার আগে ডি অক্ষরের সাথে মেলে এবং এর (?<-2>.)*স্ট্রিং «এবং »তারপরে ক্যাপচার করা অক্ষরের সাথে প্রতিস্থাপন করা হবে ।


5

এমএটিএল , 21 19 17 16 বাইট

"@t4Y2m?UQ$y]]&h

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

ব্যাখ্যা

        % Implicitly grab input as a string
"       % For each character in the input
  @     % Push that character to the stack
  t     % Make a copy of it
  4Y2   % Push the pre-defined array '0123456789' to the stack
  m     % Check if the current character is part of this array (a digit)
  ?     % If it is
    UQ  % Convert it to a number and add 1 (N)
    $y  % Make a copy of the element N-deep in the stack. MATL uses one-based indexing
        % So 1$y is the element at the top of the stack, 2$y is the next one down, etc.
  ]     % End of if statement
        % Non-digit characters remain on the stack as-is
]       % End of for loop
&h      % Horizontally concatenate the entire stack to form a string
        % Implicitly display the result

$yনতুন সংস্করণে দুর্দান্ত ব্যবহার !
লুইস মেন্ডো

@ লুইস মেন্ডো ধন্যবাদ! হ্যাঁ স্ট্যাক-ভিত্তিক ভাষাগুলি এই চ্যালেঞ্জের জন্য ভাল ফিট
স্যুভার

@ লুইসমেন্দো দুর্ভাগ্যক্রমে এটি আরও সংক্ষিপ্ত হতে পারত যদি Uকেবল অঙ্কগুলির জন্য কাজ করে। দুর্ভাগ্যক্রমে 'e'Uফলন exp(1)অন্যথায় আমি 4Y2জিনিসগুলি থেকে মুক্তি পেতে পারতাম
স্যুভার

সেই অষ্টাভে জিনিসগুলির আরেকটি ...
লুইস মেন্ডো

4

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

f=
s=>s.replace(/\d/g,(c,i)=>a[i]=a[i+=~c]||s[i],a=[])
<input oninput=o.textContent=f(this.value)><pre id=o>

a অন্যান্য অঙ্কগুলি উল্লেখ করে অঙ্কগুলি সম্পাদন করতে প্রতিস্থাপিত অঙ্কগুলি সঞ্চয় করতে ব্যবহৃত হয়।


`` `s => s.replace (a = / \ d / g, (c, i) => a [i] = a [i + = ~ c] || s [i])` ``
l4m2

3

পার্ল 5 , 34 বাইট

কোড + -pপতাকা 33 বাইট ।

s/\d/substr$_,-$&-1+pos,1/e&&redo

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

s/\d/.../e...পার্ল কোড হিসাবে মূল্যায়ন করে প্রথম সংখ্যাটি প্রতিস্থাপন করুন । (সঙ্গে ...হচ্ছে substr$_,-$&-1+pos,1যে ক্ষেত্রে। substr$_,-$&-1+pos,1আয় সাবস্ট্রিং $_দৈর্ঘ্যের 1সূচিতে -$&-1+pos, যেখানে $&সংখ্যা মাত্র মিলেছে, এবং posম্যাচ শুরুর সূচি। আমরা শুধু প্রয়োজন redoযদি প্রতিস্থাপন অর্ডার প্রত্যেক অঙ্ক প্রতিস্থাপন করার জন্য সফল হয়েছে। (এবং ফলাফলটি স্পষ্টতই -pপতাকার জন্য মুদ্রিত ধন্যবাদ )।


ওল্ড অ্যাপ্রোচ, 47 বাইট:

কোড + -Fপতাকা 44 বাইট ।

map{$F[$i]=$F[$i-$_-1]if/\d/;++$i}@F;print@F

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

বেশ সরাসরি সরাসরি এগিয়ে। -Fপতাকা প্রতিটি চরিত্রের ইনপুটগুলিতে বিভক্ত করে @F। (যেমন ইনপুট প্রতিটি চরিত্র) map{...}@Fমাধ্যমে পুনরাবৃত্তি @F। অক্ষর যদি একটি অঙ্ক ( /\d/) হয়, তবে আমরা সূচকে অক্ষর দ্বারা এটি প্রতিস্থাপন করব $i-$_-1। এটি $iহ'ল বর্তমান সূচক ভেরিয়েবল (যা আমরা প্রত্যক্ষিত প্রতিটি চরিত্রের বর্ধিতকরণের মাধ্যমে বজায় রাখি)।


3

জাভাস্ক্রিপ্ট ES6, 61 59 বাইট

8 বাইট বন্ধ করে গল্ফ করার জন্য @ লুকাকে ধন্যবাদ

x=>[...x].map((p,i,a)=>a[i]=/\d/.test(p)?a[i-1-p]:p).join``

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


x.split``একসাথে 6 বি সংরক্ষণ করাও হতে পারে [...x], [0-9]হতে পারে\d
লুক

বর্তমানে কোথাও একটি ত্রুটি রয়েছে তাই প্রথমে এটি ঠিক করতে চলেছে
ফেব্রুটিক

x=>[...x].map((p,i,a)=>+p+1?a[i-1-p]:p).join``46 বাইটের জন্য
লুক

স্পেসে ব্যর্থ + + "0 দেয় যার ফলে এটি পূর্বের চরিত্রটি দখল করে
fəˈnɛtɪk

x=>[...x].map((p,i,a)=>a[i]=1+p>9?a[i-1-p]:p).join``
l4m2


2

সিজেম, 13 বাইট

q{_A,s#)$\;}/

অনলাইন ডেমো

এই সমাধানটি ডিকোডিং বাস্তবায়নের জন্য সিজেমের অন্তর্নির্মিত " স্ট্যাকের অনুলিপি এন- তম আইটেম" $ব্যবহার করে। এটি ইনপুট (দিয়ে q) পড়ে এবং তারপরে ইনপুট স্ট্রিং থেকে অক্ষরগুলি লুপ করে এবং স্ট্যাকের সাথে (সাথে {}/) ডাম্প করে শুরু হয় । তবে লুপের দেহের অভ্যন্তরে এটি প্রতিটি অক্ষরটিকে স্ট্যাকের (পরে) রাখার পরে নকল করে তোলে এবং স্ট্রিংয়ের _সাথে এর অবস্থানটি সন্ধান করে এটি কোনও অঙ্ক হয় কিনা তা যাচাই #করে নিখুঁতভাবে "0123456789"উপস্থাপন করা হয় A,s

এই চেহারাটির ফলাফলটি হ'ল হয় ডিজিটের সংখ্যাসূচক মান বা, অক্ষরটি যদি অঙ্ক না হয়, -1। )অপারেটর তারপর এক যে মান, এবং $স্ট্যাকের উপরে নিচে যে অনেক অবস্থানের সময়ে চরিত্র বর্তমান সঙ্গে এটি প্রতিস্থাপন করে। পরিশেষে, \;কেবল _স্ট্যাক থেকে আমরা তৈরি বর্তমান ইনপুট চরিত্রের অনুলিপিটি সরিয়ে ফেলি, কারণ এটির আর প্রয়োজন নেই।


2

বেফুঞ্জ -98 , 45 43 বাইট

::::#@~\1p:1g::'9`!\'/`*j;'/--1g\1p\1g#;,1+

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

বুদ্ধিটা:

  1. ইনপুট স্ট্রিংয়ের প্রতিটি চরের জন্য,
    1. 2 লাইনে লিখুন
    2. যদি এটি একটি নম্বর না হয় তবে কেবল এটি আউটপুট করুন
    3. অন্যথায়, সঠিক মানটি সন্ধান করুন, এটি পুনরায় লিখুন, তারপরে এটি আউটপুট করুন
::::            ; There's a counter on the stack, duplicate it 4 times  ;
    #@~         ; Get the next char of input, exiting if there is none  ;
       \1p      ; At the location (counter, 1), write the input char    ;
          :1g   ; Re-obtain the char. Stack is now [counter * 4, input] ;

::                ; Stack: [counter * 4, input * 3]      ;
  '9`!\'/`*       ; If !(input > '9') and (input > '/')  ;
                  ; IE If ('0' <= input && input <= '9') ;
           j;...; ; Then execute the ...                 ;

; Stack: [counter * 4, input] ;
; The ... branch:             ;

'/-             ; input -> int. (input -= '/')             ;
   -            ; counter - int(input) - 1                 ;
                ; Stack: [counter * 3, lookupPosition ]    ;
    1g          ; Get the char that we want to find        ;
      \1p\1g#   ; Overwrite the current char (not the old) ;

; Both branches: ;
,1+             ; Print the number and increment the counter ;

আমি এই সংস্করণটি আরও ছোট করতে পারিনি, তবে এটি 44 বাইট:

s #@~\3p:3g::'9`!\'/`*j;'/--3g#;:10g3p,1+:::

ভেবেছিলাম যে এটির সাথে ঝরঝরে কৌতুকের কারণে আমি এটি ভাগ করে নিচ্ছি s- তবে স্ট্যাকের উপরে কাউন্টারটি সঞ্চয় করা সেই 1 চরের উন্নতির দিকে নিয়ে যায়



2

পাইথন 2, 75 71 বাইট

s='';j=-1
for i in input():s+=s[j-int(i)]if'/'<i<':'else i;j+=1
print s

অনলাইনে চেষ্টা করে দেখুন!

সম্পাদনা করুন: 32-47 এর মধ্যে আসকি মানগুলির জন্য স্থির ; ডাবল ডিকোডিংয়ের জন্য স্থির করা (উদাহরণস্বরূপ "alp2c1" থেকে "আলপাকা")


1
@ আরনাউল্ড নোপ দুঃখিত, আমি অনুমানটি খুব কাছাকাছিভাবে পড়িনি। শীঘ্রই সংশোধন করব
গণিত জাঙ্কি

মনে হচ্ছে একটি বাগ আছে। জন্য 'Prog2am0in6 Puz0les7&1Cod74G4lf'আপনার প্রোগ্রাম কপি করে প্রিন্ট Programming Puzzles &7Code1Golf! দুটি টিআইও লিঙ্ক ভাগ করে নেওয়ার চেষ্টা করেছি!
কীর্তনা প্রভাকরণ 14

কিরথানাপ্রভরণ ধন্যবাদ! 0 বাইট ব্যয়ে স্থির! (আমার বিকল্প সমাধানটি যদিও কাটেনি)
গণিত জাঙ্কি

একটি দুর্দান্ত পন্থা!
কীর্তন প্রভাকরণ 15

আপনি '/' <i <':' ব্যাখ্যা করতে পারেন। আমি জানি এটি পরীক্ষা করে যদি এটি একটি নম্বর হয় তবে এটি কীভাবে কাজ করে?
মাটিয়াস কে

2

পিএইচপি 7.1 67 59 বাইট

while(_&$c=$argn[$i++])$t.=($c^"0")<"
"?$t[~+$c]:$c;echo$t;

এসটিডিআইএন থেকে ইনপুট নেয়; পাইপ হিসাবে চালান -nRবা এটি অনলাইনে চেষ্টা করুন

  • _&$c=$s[$i++]স্ট্রিংয়ের মাধ্যমে লুপ ( _&$cএমন কিছু ঘটবে যা না হয় "0"; তাই লুপটি ভাঙ্গতে পারে এমন একমাত্র অক্ষর খালি স্ট্রিং = ইনপুটটির শেষ)
  • $c^"0" আসকি কোডে টগল বিট 5 এবং 6
  • <"\n" <chr (10) ফলাফল কিনা তা পরীক্ষা করুন
  • যদি তা হয় তবে এটি একটি অঙ্ক: সূচক অনুসারে পূর্ববর্তী অক্ষরটি মুদ্রণ করুন (এবং বর্তমান সূচীতে অনুলিপি করুন)
  • অন্যথায় এই চরিত্রটি মুদ্রণ করুন

12% বাঁচানোর জন্য ক্রিস্টফকে ধন্যবাদ


1
আমি জানি এটি একটি পুরানো উত্তর তবে: gণাত্মক স্ট্রিং অফসেট! (এবং এটি $s=$argn...?)for(;_&$c=$argn[$i++];)$t.=($c^"0")<"\n"?$t[~+$c]:$c;echo$t;
ক্রিস্টোফ

2

ভিম ম্যাক্রো / কীস্ট্রোক, 49 বাইট

^M প্রত্যাবর্তন অক্ষর (0x0A, 1 বাইট) উপস্থাপন করুন।

qqqqq/[0-9]^Myl:exe 'norm '.(@"+1).'h'^Mylnphx@qq@q

ব্যাখ্যা

qqq                                                     clear register q
   qq                                                   record into q
     /[0-9]^M                                           move the cursor to the next digit
             yl                                         yank the digit
               :exe 'norm '.(@"+1).'h'^M                move the cursor left that number of characters plus one
                                        yl              yank the char
                                          n             go back to the digit
                                           p            paste the char 
                                            hx          delete the digit
                                              @q        recursive call
                                                q       stop recording
                                                 @q     run the macro

2

এপিএল (ডায়ালগ ক্লাসিক) , 25 23 বাইট

-২ বাইটস @ ফ্রাউনফ্রোগকে ধন্যবাদ

((⊂⌷⊢)⍣≡⍳∘≢-11|⎕d∘⍳)⊃¨⊂

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

ব্যবহারসমূহ ⎕io←1

( নীচে মূল্যায়নের একটি মধ্যবর্তী মান জন্য দাঁড়িয়েছে)

⎕d স্ট্রিং হয় '0123456789'

⎕d⍳⍵এর অক্ষরের সূচকগুলি (এই ক্ষেত্রে 1 ভিত্তিক) সন্ধান করে ⎕d; অ-অঙ্কের জন্য সূচক 11 হয়

11|⍵ মডুলো হয় - 11 গুলি 0 সে হয়ে যায়

≢⍵ দৈর্ঘ্য হয়

⍳≢⍵হয় 1 2 ...পর্যন্ত≢⍵

তাই হয়, (⍳≢⍵)-11|⎕d⍳⍵আমাদের একটি ভেক্টর দেয় আমি সূচকের যেখানে আমরা ফলে অক্ষর পেতে হওয়া উচিত এর; তবে সেই সূচকগুলির মধ্যে কিছুগুলি অন্য (ছোট) সূচকে পুনর্নির্দেশ করতে পারে। ট্রানজিটিভ ক্লোজার গণনা করতে (অর্থাত্ কার্যকর সূচকগুলি), আমরা ভেক্টরকে নিজের মধ্যে সূচক করি ( বা এর ⊂⌷⊢সমতুল্য একটি ট্রেন ) এবং এটি স্থির না হওয়া অবধি পুনরাবৃত্তি করি ( স্থির পয়েন্ট অপারেটর হিসাবে পরিচিত )।(⊂i)⌷ii[i]⍣≡

অবশেষে আমরা মূল স্ট্রিংয়ে সূচি: (...)⊃¨⊂


এটি ট্রেন হিসাবে দেখতে কেমন হবে?
ফ্রাউনফ্রোগ

@FrownyFrog প্রকৃতপক্ষে, খাটো
ngn


1

জাপট , 24 বাইট

£Xn >J?U=UhYUgJ+Y-X):PÃU

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

ব্যাখ্যা:

£Xn >J?U=UhYUgJ+Y-X):PÃU
£                     Ã    Iterate through the input (implicit U) 
                             X becomes the iterative item, Y becomes the index
 Xn                          Try parseInt(X)
    >J                       > -1
                               In this case, this checks if X is a digit
      ?                      If true:
       U=                      Set U to 
         UhY                     U with the char at index Y set to:     
            UgJ+Y-X               The index at -1+Y-X
                   ):        Else:
                     P         variable P (just a no-op in this case)
                       U   Finally, return U




1

জাভাস্ক্রিপ্ট ES6, 54 বাইট

f=r=>[...r].reduce((a,s,i)=>a+(/\d/.test(s)?a[i+~s]:s))

f=r=>[...r].reduce((a,s,i)=>a+(/\d/.test(s)?a[i+~s]:s))

console.log(f("Prog2am0in6"));
console.log(f("abcd"));
console.log(f("a000"));
console.log(f("ban111"));
console.log(f("Hel0o W2r5d!"));
console.log(f("this 222a19e52"));
console.log(f("golfin5 3s24o0d4f3r3y3u"));
console.log(f("Prog2am0in6 Puz0les7&1Cod74G4lf"));
console.log(f("Replicants 4re3lik448ny3oth8r5mac6in8.8T64y'r371it9376a1b5n1fit7or2a1h2z17d."));


1
পিপিসিজিতে আপনাকে স্বাগতম! আপনার যদি পুনরাবৃত্ত কলগুলির জন্য আপনার ফাংশনের নাম প্রয়োজন না হয়, নামবিহীন ফাংশনগুলি বৈধ, সুতরাং আপনি দুটি বাইট সংরক্ষণ করতে পারেন f=
মার্টিন এন্ডার

1

> <> (ফিশ), 108 বাইট (= 9 x 12 গ্রিড)

01-r>:0(\
"/"&::;?/
)?\v    \
":/v!?(":
")\ :>:"0
 !?\
${/  \ -1
&>\ ~{:&$
\ \ :"0"=
/\- 1}$/?
:v&//}~/~
 \o}\&$/ 

আশেপাশে মাছ সাঁতার দেখতে এখানে চেষ্টা করুন ।

  • ইনপুট স্ট্যাক -1 সংযোজন তারপর স্ট্যাক বিপরীত।
  • লুপ: শীর্ষ মানটি যদি -1 হয় তবে শেষ হয় (আমরা সমস্ত অক্ষরের মধ্য দিয়ে সাইকেল চালিয়েছি)। অন্যথায়:
  • রেজিস্টার শীর্ষ অক্ষর রাখুন; এটি "0" থেকে "9" এর মধ্যে রয়েছে কিনা তা পরীক্ষা করে দেখুন। যদি তাই:
    • স্ট্যাকটিকে উপযুক্ত জায়গাগুলির আবর্তিত করুন
    • চরিত্রটি নির্দেশিত হচ্ছে
    • পিছনে ঘোরান এবং রেজিস্টার থেকে অক্ষরের সাথে নম্বরটি প্রতিস্থাপন করুন
  • আউটপুট; পুনরায় শুরু লুপ।

1

8086 মেশিন কোড, 35 বাইট

00000000  be 82 00 ac 98 50 2c 30  3c 09 77 0c 4e 89 f7 4e  |.....P,0<.w.N..N|
00000010  29 c6 58 ac aa 89 fe 50  5a b4 02 cd 21 80 fa 0d  |).X....PZ...!...|
00000020  75 e1 c3                                          |u..|
00000023



1

জে , 20 বাইট

{~[:{~^:_#\-2+_1".,.

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

                  ,.  Each character on a separate row
              _1".    Convert to numbers, replacing non-numbers with -1
                         (it becomes one row again)
            2+        Add 2.
         #\           Prefix lengths (range 1..length)
           -          Subtract
  [:{~^:_             Index into itself as long as it changes the result
{~                    Index into the original string

অনুপ্রেরণা জন্য ngn ক্রেডিট।

22 বাইট

(],,{~1{._1-_1".[)/@|.

এটি জেলি উত্তর একটি বন্দর।

                    |. The string backwards, because reduce is right-to-left.
            _1".[      The next character as a number (d), -1 if it's not a number,
                          and a space character produces an empty array.
         _1-           -1-d
      1{.              Take 1. If we have a nothing
                          at this point, that makes it a 0.
   ,                   Prepend the next character to the result of the previous call.
    {~                 Select the character. 0 is the first, _2 is second to last.
 ],                    Append the result.

উভয় সমাধানে টিআইও যে সংস্করণটি ব্যবহার করে .তা 0 টি হিসাবে একককে ব্যাখ্যা করে , তাই শেষ পরীক্ষাটি ব্যর্থ হয়। পুরানো সংস্করণ (≤7) সঠিকভাবে কাজ করছে বলে মনে হচ্ছে।

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

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