তাদের নিজ নিজ চিঠি দ্বারা বিকল্প নম্বর


23

একটি ফাংশন বা প্রোগ্রাম তৈরি করুন যা সংখ্যাকে ইনপুট হিসাবে গ্রহণ করে এবং একটি স্ট্রিং আউটপুট দেয় যেখানে নিম্ন এবং উচ্চতর বর্ণমালার জন্য ASCII- কোড পয়েন্টগুলি তাদের অক্ষরের সমতুল্য দ্বারা প্রতিস্থাপিত হয়।

  • উপরের বর্ণমালা কোড পয়েন্ট ব্যবহার করে: 65-90
  • নিম্ন বর্ণের বর্ণমালা কোড পয়েন্ট ব্যবহার করে: 97-122

যদি ইনপুটটিতে কোনও সংলগ্ন অঙ্কগুলি কোনও বর্ণের কোড পয়েন্টের সমান হয়, তবে সেই বর্ণটি আউটপুট স্ট্রিংয়ের অঙ্কগুলিকে প্রতিস্থাপন করবে।

নিয়মাবলী:

  • ইনপুটটি 1 থেকে 99 অঙ্কের মধ্যে একটি ইতিবাচক পূর্ণসংখ্যার হবে
  • আপনি ধরে নিতে পারেন কেবল বৈধ ইনপুট দেওয়া হয়েছে
  • আপনি পূর্ণসংখ্যার শুরুতে প্রতিস্থাপন শুরু করেন ( 976-> a6না 9L)
  • ইনপুটটি কোনও উপযুক্ত বিন্যাসে থাকতে পারে (স্ট্রিং প্রতিনিধিত্ব ঠিক আছে)
  • আউটপুট যে কোনও উপযুক্ত বিন্যাসে হতে পারে
  • স্ট্যান্ডার্ড বিধি প্রয়োগ

উদাহরণ:

1234567
12345C

3456789
345CY

9865432
bA432

6566676869707172737475767778798081828384858687888990
ABCDEFGHIJKLMNOPQRSTUVWXYZ

6711110010100071111108102
Code000Golf

সবচেয়ে কম কোডে বাইট জিতেছে!


লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে ক্যাটালগ তৈরি করে a) ভাষার প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes


2
"ইনপুটটি 1 থেকে 99 সংখ্যার মধ্যে ইতিবাচক পূর্ণসংখ্যার হবে" আমি জানি যে কোনও প্রোগ্রামিং ভাষা সম্পর্কে এটি কেবল 1 থেকে 99 ডিজিটের মধ্যে স্ট্রিং হবে , এমনকি একটি 64-বিট ইন্টিও কেবলমাত্র 19 দশমিক অঙ্কগুলি ...
টিজে ক্রাউডার

3
@ টিজে ক্রাউডার আমি ধরে নিয়েছি যে তিনি অঙ্কের অর্থ গাণিতিক অর্থে পূর্ণসংখ্যক, ডেটা টাইপ নয়।
ডেনিস

1
@ টিজে ক্রাউডার বৈধ পয়েন্ট :-) যদিও, আমি যদি ভুল না করি তবে 1e99 প্রযুক্তিগতভাবে এখনও একটি পূর্ণসংখ্যা। long intযথেষ্ট নয়, আপনি প্রয়োজন super long int
স্টিভি গ্রিফিন

1
@ স্টিওগ্রিফিন: হাহ! :-) আমি নিশ্চিত যে এখানে কোথাও একটি ভাষা আছে।
টিজে ক্রাউডার

উত্তর:


2

জल्फ, 18 16 বাইট

এখানে চেষ্টা করুন! আমি জানতাম যে ওপারলওয়ার ফাংশনটি কোনও দিন কার্যকর হবে! প্রতিস্থাপন óসঙ্গে ΢, বা শুধু অনুবাদক লিঙ্কটি ব্যবহার করুন। এটি আইএসও 8859-7 এ এনকোড হয়েছে।

ρiLaΜGpwpuEdóH΅A
      pw           upper and lower
        pu         of the uppercase alphabet
     G    E        split by nothing (E = "")
    Μ      dóH     map each char to its numeric counterpart
  La               regex alternate array (e.g. La[1,2,3] => "1|2|3")
ρi            ΅A   replace input with the character code of the match (΅ is string lambda)

17

পার্ল, 39 38 বাইট

( -pপতাকাটির জন্য 1 বাইট যুক্ত করা হয়েছে ))

$"="|";s/@{[65..90,97..122]}/chr$&/ge
s/                           /          replace...
  @{[                      ]}           this string, treated as a regex:
     join"|",65..90,97..122             65|66|67|68|...|121|122
                                   /ge  ...with this string, eval()'d:
                                 $&     the entirety of the last match
                              chr       convert to char from ASCII code

কাজের জন্য সঠিক সরঞ্জাম ™।

একটি ছোট অপ্টিমাইজেশনের পরে ব্যাখ্যাটি পুরানো হয়েছে (ধন্যবাদ দেব-নাল !) যা এটি একটি একক বাইটকে খাটো করে তোলে (তবে কিছুটা কম মার্জিত): চলকটি একটি স্ট্রিংয়ে অ্যারেরকে ফাঁকে ফাঁকে ফাঁকে ফাঁকে বিভক্ত $"করার সময় কী করতে joinহবে তা উপস্থাপন করে, তাই সেটিংয়ের $"="|"প্রয়োজনীয়তা সরিয়ে দেয় join

ডেমো:

llama@llama:~$ perl -pe '$"="|";s/@{[65..90,97..122]}/chr$&/ge' 
1234567
12345C
3456789 
345CY
9865432
bA432
6566676869707172737475767778798081828384858687888990
ABCDEFGHIJKLMNOPQRSTUVWXYZ
6711110010100071111108102
Code000Golf

আমার ধারণা আপনি $"="|"যোগদানের পরিবর্তে একটি একক বাইট সংরক্ষণ করতে পারেন ?
andlrc

যেমন। $"="|";s/@{[65..90,97..122]}/chr$&/ge
andlrc

@ দেব-নাল এটি কাজ করে, ধন্যবাদ!
ডুরনবব

11

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

s=>s.replace(/6[5-9]|[78]\d|9[0789]|1[01]\d|12[012]/g,x=>String.fromCharCode(x))

এখানে ক্রিয়াকলাপ দেখুন: https://regex101.com/r/iX8bJ2/1

শুধু কৌতূহলের জন্য, একটি জিনিস আমি এখানে শিখেছি:

আমি পরিবর্তন x=>String.fromCharCode(x)করতে পারি না String.fromCharCode কারণ ...


6

সিজেম, 22 বাইট

q{+'[,_el^{_is@\/*}/}*

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

পটভূমি

কেবলমাত্র অঙ্কের গোষ্ঠীগুলির সমস্ত উপস্থিতিগুলি যথাযথভাবে বর্ণগুলি (আমরা যে কোনও ক্রমে চয়ন করতে পারি) এর সাথে বাম-থেকে-ডান নিয়ম মেনে চলতে ব্যর্থ হবে।

পরিবর্তে, আমরা ইনপুট স্ট্রিংয়ের সমস্ত উপসর্গ তৈরি করতে পারি এবং তৈরি করার সময় সমস্ত সম্ভাব্য বিকল্প তৈরির চেষ্টা করতে পারি। যেহেতু কোনও কোড পয়েন্ট অন্য কোড পয়েন্টে অন্তর্ভুক্ত নেই, তাই এই প্রচেষ্টাগুলির ক্রমটি গুরুত্বপূর্ণ নয়।

উদাহরণ স্বরূপ:

67466

6     -> 6
67    -> C
 C4   -> C4
 C46  -> C46
 C467 -> C4B

C4B

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

q                       Read all input from STDIN.
 {                  }*  Fold; push the first character, and for each subsequent
                        character, push it and do the following:
  +                       Append the character to the string on the stack.
   '[,_el^                Push the string of all ASCII letters.
                          See: http://codegolf.stackexchange.com/a/54348
          {       }/      For each ASCII letter:
           _                Push a copy of the letter.
            i               Convert to integer, i.e., compute its code point.
             s              Cast to string.
              @\            Rotate and swap.
                /           Split the modified input characters at occurrences (at
                            most one) of the string repr. of the code point.
                 *          Join, separating by the corresponding letter.

4

পিএইচপি, 110 102 101 68 67 বাইট

খুব কঠিন চ্যালেঞ্জ। এটিই আমি নিয়ে আসতে পারি সেরা। এটি সম্পূর্ণ নতুন সংস্করণ।

for($i=64;123>$i+=$i-90?1:7;)$t[$i]=chr($i)?><?=strtr($argv[1],$t);

এভাবে চালান:

php -r 'for($i=64;123>$i+=$i-90?1:7;)$t[$i]=chr($i)?><?=strtr($argv[1],$t);' 6711110010100071111108102;echo
> Code000Golf
  • মানটওয়ার্কের ctype_alphaপরিবর্তে preg_match, thx এর পরিবর্তে 8 বাইট সংরক্ষণ করা হয়েছে
  • 0খালি খালি স্ট্রিংটি পরীক্ষা না করে স্ট্রিংকে প্রিপেন্ড করে 1 বাইট সংরক্ষণ করা হয়েছে : যখন ইনপুটটির শেষ অক্ষর 0 হয়, আমি যে স্ট্রিংটি নিচ্ছি তা "0" হবে, যা মিথ্যা, যদিও "00" সত্যবাদী, সুতরাং এটি সর্বশেষ 0 মুদ্রণ এড়িয়ে যাবে না।
  • strtrরূপান্তরকরণ জোড়া দিয়ে অ্যারে তৈরি করার পরে ব্যবহার করে একটি বিশাল 33 বাইট সংরক্ষণ করা
  • সংক্ষিপ্ত প্রিন্ট ট্যাগ ব্যবহার করে একটি বাইট সংরক্ষণ করা হয়েছে

1
আপনার নিয়মিত অভিব্যক্তিটি পরিবর্তিত #[A-Z]#iকরতে হবে কারণ বর্তমানটি আনন্দের সাথে "92" কে "\" তে রূপান্তরিত করতে দেবে। বা ctype_alpha()পরিবর্তে চেষ্টা করুন preg_match()। এখন পর্যন্ত কাজ মনে হচ্ছে।
manatwork

"0", which is falsy, whereas "00" is truthyভাল যাচ্ছে, পিএইচপি।
বিড়াল

3

পাইথন 3, 211 189 188 বাইট

def f(c,i=0,n=""):
 while i<len(c):a=1;x=int(c[i:i+2]);a=2 if 64<x<91 or 96<x<100 else a;x=int(c[i:i+3]) if a<2 else x;a=3 if 99<x<123 else a;x=chr(x) if a>1 else c[i];n+=x;i+=a
 return n
  • এর সাথে with n প্রতিস্থাপন করে 23 বাইট সংরক্ষণ করা হয়েছে; ডেনিসকে ধন্যবাদ

পরীক্ষা

এখানে চিত্র বর্ণনা লিখুন


1
আপনি যদি ;লাইন ব্রেকগুলির পরিবর্তে ব্যবহার করেন তবে আপনি সম্পূর্ণ লুপটি একটি এক লাইনে রেখে দিতে পারেন। এছাড়াও, প্রথম লাইন হয়ে উঠতে পারে def f(c,i=0,n=""):
ডেনিস

1
a=1;a=2 if 64<x<91 or 96<x<100 else a-> a=1+(64<x<91or 96<x<100)ইত্যাদি
seequ

2

পাইথ, 20 18 বাইট

.Uu:G`CHHsrBG1+bZz

@ ডেনিস হিসাবে একই অ্যালগরিদম। জিলির চেয়ে আমার ফোনে পাইথ কোড করা অনেক সহজ।

                implicit: z=input
.U              Reduce the following lambda b, Z over z
                b is the string being built; z is the next char
   u                Reduce the following lambda G,H over +bZ
                    G is the string, H is the next letter to match
     :                  Replace
       G                in G
       ` C H            the char code of H
       H                with H
     s rB            where H takes on values:
          G              the lowercase alphabet (that's the global value of G)
          1              concatenated to its uppercased self.
     +          
       b
       Z
   z

ধন্যবাদ @ আইস্যাক

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


আপনি কেবল আপনার ফোনে এই সাইটটি বন্ধ রাখতে পারবেন না, আপনি কি পারেন ...?
কনর ও'ব্রায়েন

1
বিশেষত যখন আমার সমস্ত মুদ্রণযোগ্য এএসসিআইআই-তে কোডিংয়ের বিলাসিতা থাকে: ডি
লিটারোসিয়াস্ত

1
এটি সত্য, সম্ভবত সেই সমস্ত জেলি থেকে বিরতি নেওয়া খুব ভাল ... আপনি জানেন, একটি সুষম ডায়েট;)
কনর ও'ব্রায়েন

0

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

õsvy«žnvyÇy:

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

ব্যাখ্যা:

õ             # Push an empty string ""
 sv           # Swap to get the (implicit) input-string, and loop over its characters:
   y«         #  Append the current character to the string
     žn       #  Push builtin "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
       v      #  Inner loop over each of these letters:
           :  #   Replace in the string all occurrences (should be either 0 or 1 occurrence)
        yÇ    #   of the ordinal value of the current letter
          y   #   by this letter
              # (after the loops, implicitly output the top of the stack as result)

হ্রাস-বাই ব্যবহার করে 12 বাইট বিকল্প:

Å»«žnvyÇy:]θ

অনলাইনে এটিকে পরখ করে বা সব পরীক্ষার বিষয় যাচাই বা শুধু প্রথম 10 বাইট সঙ্গে একটি ধাপে ধাপে হ্রাস দেখতে

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