অনুপস্থিত চিঠিটি সন্ধান করুন


27

নির্দেশিকা

কার্য

এমন একটি পদ্ধতি লিখুন যা ধারাবাহিকভাবে (ক্রমবর্ধমান) অক্ষরের ইনপুট হিসাবে গ্রহণ করে এবং এটি অ্যারে (কিছু ভাষায় তালিকা) থেকে অনুপস্থিত চিঠিটি ফেরত দেয়।


বিধি

  • এটি কোড গল্ফ তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!
  • আপনি সর্বদা একটি বৈধ অ্যারে পাবেন
  • সর্বদা ঠিক একটি অক্ষর অনুপস্থিত থাকবে
  • অ্যারের দৈর্ঘ্য সর্বদা কমপক্ষে 2 হবে।
  • অ্যারে সর্বদা কেবলমাত্র একটি ক্ষেত্রে অক্ষর থাকবে (বড় হাতের বা ছোট হাতের অক্ষর)
  • ইনপুটটি আপনাকে একই ক্ষেত্রে (বড় হাতের বা ছোট হাতের) আউটপুট দিতে হবে
  • অ্যারে সর্বদা কেবল একবারে একটি অক্ষর যাবে (নিখোঁজ চিঠিটি এড়িয়ে যাওয়া)
  • অ্যারের দৈর্ঘ্য 2 এবং 25 এর মধ্যে হবে
  • অ্যারের প্রথম বা শেষ উপাদানটি কখনই অনুপস্থিত হবে না

উদাহরণ

['a','b','c','d','f'] -> 'e'

['O','Q','R','S'] -> 'P'

['x','z'] -> 'y'

['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'] -> 'v'


আমি কি তার পরিবর্তে একটি স্ট্রিং নিতে পারি?
লিকি নুন

@ লিকিউন স্ট্রিংস হ'ল অক্ষরের অ্যারে, তাই হ্যাঁ।
আমোরিস

1
আউটপুটটি কী অনুপস্থিত অক্ষর সমন্বিত কোনও অ্যারে হতে পারে (উদাহরণস্বরূপ: যদি ইনপুট ['a','b','c','d','f','g'], আউটপুট ['e'], যদি কোডটি আরও ছোট করে তোলে?
মিঃ এক্সকডার

1
@ মিঃ এক্সকোডার একটি স্ট্রিং কেবলমাত্র অক্ষরের একটি অ্যারে, তাই হ্যাঁ
আমোরিস

2
বিধি চারটি হ'ল নিয়ম আটটির একটি উপসেট এবং এটি সরানো যেতে পারে (অন্ততপক্ষে, আপনি যদি নিয়মের আটটির শেষে "অন্তর্ভুক্ত" শব্দটি রাখেন)।
এনএইচ।

উত্তর:



11

সি # (.নেট কোর) , 48 47 46 বাইট, চর অ্যারে হিসাবে ইনপুট

s=>{for(int i=0;s[++i]==++s[0];);return s[0];}

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

ব্যাখ্যা: অ্যারেতে প্রথম উপাদানটি বাড়ানো হয় পাশাপাশি নীচের উপাদানগুলির পুনরাবৃত্তিকারী একটি পয়েন্টার হয়। যখন প্রথম উপাদান এবং বর্তমান উপাদান উভয়ই আলাদা হয় তবে এটি প্রথম উপাদানটি প্রদান করে।

সি # (.নেট কোর) , 58 56 50 বাইট, স্ট্রিং হিসাবে ইনপুট

s=>{var c=s[0];while(s.IndexOf(++c)>=0);return c;}

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

পূর্ববর্তী 58-বাইট সমাধান (প্রথম মন্তব্যে রেফারেন্স করা):

s=>{for(int i=1;;i++)if(s[i]-s[0]>i)return(char)(s[i]-1);}

সিস্টেম.লিনক ব্যবহার করে অ্যালগরিদম

নিম্নলিখিত অ্যালগরিদমগুলি অবশ্যই using System.Linq;বাইট গণনায় (18 বাইট) যুক্ত করতে হবে এবং তাই লম্বা।

আমি এটিকে বেশ পছন্দ করেছি (52 + 18 বাইট):

s=>{int i=0;return(char)(s.First(c=>c-s[0]>i++)-1);}

এবং আপনার কাছে একটি ওয়ান-লাইনার (45 + 18) -বাইট সলিউশনও রয়েছে:

s=>(char)(s.Where((c,i)=>c-s[0]>i).First()-1)

এবং খুব চালাক (37 + 18) -বিয়েট সমাধান, এডকার সৌজন্যে:

s=>s.Select(e=>++e).Except(s).First()

1
এটি কি সমস্ত কোড পাথের কোনও মান ফেরত দেয় না তা সংকলনে ব্যর্থ হবে না? তবে তুলনা করার জন্য +1 s[i]-s[0], বেশ চালাক!
TheLethalCoder

@TheLethalCoder forলুপের স্টপ শর্ত না থাকায় এটি ব্যর্থ হবে না , সুতরাং ifশর্তটি মূল্যায়ন না করা অবধি এটি পুনরাবৃত্তি করতে থাকবে true
চার্লি

1
আপনি এই জাতীয় 8 বাইট সংরক্ষণ করতে পারেন: a=>{int i=0;for(;a[++i]-a[0]<=i;);return--a[i];}(আপনি যখন ইনপুটটি গ্রহণ করবেন char[])। আমাকে বিটিডব্লু ধন্যবাদ জানায় না , আমার জাভা 8 টি উত্তর সম্পর্কে নেভায়ের মন্তব্যে ধন্যবাদ ।
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন ইনপুটটিকে চর অ্যারে হিসাবে গ্রহণ করে আরও দুটি বাইট সংরক্ষণের একটি উপায় খুঁজে পেয়েছিল।
চার্লি

1
সংক্ষিপ্ত লিঙ্ক সংস্করণ:s=>s.Select(e=>++e).Except(s).First()
এড'কা

8

এলিস , 10 বাইট

/X.
\ior@/

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

ব্যাখ্যা

এটি লিনিয়ার প্রোগ্রামগুলির জন্য কেবল একটি ফ্রেমওয়ার্ক যা পুরোপুরি অর্ডিনাল (স্ট্রিং প্রসেসিং) মোডে পরিচালনা করে:

/...
\.../

আসল রৈখিক কোডটি তখন:

i.rXo@

যা আছে:

i   Read all input.
.   Duplicate.
r   Range expansion. If adjacent letters don't have adjacent code points, the
    intermediate code points are filled in between them. E.g. "ae" would turn
    into "abcde". For the inputs in this challenge, this will simply insert
    the missing letter.
X   Symmetric set difference. Drops all the letters that appear in both strings,
    i.e. everything except the one that was inserted by the range expansion.
o   Output the result.
@   Terminate the program.



7

জাভা 8, 70 57 56 48 46 বাইট

a->{for(int i=0;++a[0]==a[++i];);return a[0];}

-14 (70 → 56) এবং -2 (48 → 46) বাইটস @ কার্লোস আলেজোকে ধন্যবাদ ।
-8 (56 → 48) ধন্যবাদ বাইট @Nevay

ব্যাখ্যা:

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

a->{            // Method with char-array parameter and char return-type
  for(int i=0;  //  Start index-integer at 0 and loop as long as
    ++a[0]      //   the previous character + 1 (by modifying the character at index 0)
    ==a[++i];   //   equals the next character (by raising the index by 1 before checking)
  );            //  End of loop
  return a[0];  //  Return the now modified character at index 0 in the array
}               // End of method

1
আপনি 8 টি বাইট সংরক্ষণ করতে সুস্পষ্ট কাস্টের পরিবর্তে একটি অন্তর্নিহিত কাস্ট ব্যবহার করতে পারেন a->{int i=0;for(;a[++i]-a[0]<=i;);return--a[i];}
নেভায়ে

6

সি (জিসিসি) , 3335 36 48 60 বাইট

সমস্ত অপ্টিমাইজেশন বন্ধ করা উচিত এবং কেবল 32-বিট জিসিসিতে।

f(char*v){v=*v+++1-*v?*v-1:f(v);}

স্ট্রিং হিসাবে ইনপুট নিন।

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


2
"সমস্ত অপ্টিমাইজেশন বন্ধ করা উচিত এবং কেবল 32-বিট জিসিসিতে" " এটি কাজ করে না বলার এক
চূড়ান্ত

আমি বললাম foo(char*a){return*a+1==a[1]?foo(a+1):++*a;}বেশ ভাল; মাত্র 1 গৃহস্থালির কাজ চেয়ে আরো প্রাকৃতিক খাটোfoo(char*a){while(*a+1==a[1])a++;return++*a;}
sehe

@ এই ধ্রুবক অপরিজ্ঞাত আচরণটি পিপিসি
কেইউ গান

5

পাইথন 3 , 74 62 58 44 40 বাইট

-12 বাইটস এরিক দি আউটগলফারকে ধন্যবাদ। -18 বাইট ধন্যবাদ লিকি নুনকে ধন্যবাদ। -4 বাইট সংগীতকারকে ধন্যবাদ 23

বায়ারস্ট্রিং হিসাবে ইনপুট নেয়।

lambda s:chr(*{*range(s[0],s[-1])}-{*s})

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

আরেকটি দুর্দান্ত সমাধান:

lambda s:chr(*{*range(*s[::~-len(s)])}-{*s})

1
.difference({*s})->-{*s}
এরিক আউটগল্ফার




1
আপনার সমাধানটি হ'ল আমি যা পরে কিন্তু আরও মার্জিত উপায়ে
ছিলাম

4

গণিত, 46 বাইট

Min@Complement[CharacterRange@@#[[{1,-1}]],#]&

আমি বিশ্বাস করি এটি Min@Complement[CharacterRange@@#[[{1,-1}]],#]&একটি বাইট সংরক্ষণ করতে পারে।
LegionMammal978

@ লিজিওনম্যামাল 978 আসলে 2!
J42161217

3

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

একটি অক্ষরের অ্যারে হিসাবে ইনপুট

(a,p)=>a.some(c=>(q=p+1,p=c.charCodeAt(),p>q))&&String.fromCharCode(q)

কম গল্ফড

a=>{
  p = undefined;
  for(i = 0; c = a[i]; i++)
  {
    q = p+1
    p = c.charCodeAt()
    if (p>q)
      return String.fromCharCode(q)
  }
}

পরীক্ষা

F=(a,p)=>a.some(c=>(q=p+1,p=c.charCodeAt(),p>q))&&String.fromCharCode(q)

function update() {
  var a0=A0.value.charCodeAt()
  var a1=A1.value.charCodeAt()
  if (a1>a0) {
    var r = [...Array(a1-a0+1)]
      .map((x,i)=>String.fromCharCode(a0+i))
      .filter(x => x != AX.value)
    I.textContent = r.join('') + " => " + F(r)
  }
  else {
    I.textContent=''
  }
}

update()
input { width: 1em }
Range from <input id=A0 value='O' pattern='[a-zA-Z]' length=1 oninput='update()'>
to <input id=A1 value='T' pattern='[a-zA-Z]' length=1 oninput='update()'>
excluding <input id=AX value='Q' pattern='[a-zA-Z]' length=1 oninput='update()'>
<pre id=I></pre>



3

রেটিনা , 33 25 বাইট

$
¶$_
T`p`_p`.*$
D`.
!`.$

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


এখানে 25 হয়, একই মৌলিক ধারণা ব্যবহার করছে: tio.run/##K0otycxL/P9fhevQNpV4rpCEgoT4ggQ9LRUulwQ9LsUEPZX///... (। আমি দ্বিতীয় লাইন decrementing করছি কারণ যে একটি বাইট সংরক্ষণ করে এবং তারপর আমি ডিডুপ্লিকেশান ব্যবহার অনন্য গৃহস্থালির কাজ খোঁজার করছি)
মার্টিন ইন্ডার

@ মার্টিনএন্ডার ডিডুকিপিকেশনটি আমি যা চেয়েছিলাম ঠিক তেমনই পেয়েছি এবং আমি ইতিমধ্যে রেটিনার কাছে ভুলে গেছি, দীর্ঘশ্বাস ফেলেছে ... (আমি জানি প্রথম লাইনটি বাড়ানো দ্বিতীয় লাইনের হ্রাসের চেয়ে আরও একটি বাইট নেয় তবে এটি ম্যাচটির রেজিটাকে আরও ছোট করে তোলে))
নীল

3

এসডাব্লুআই প্রোলগ, 124 বাইট

m([H|T]):-n(H,N),c(T,N),!,m(T).
n(I,N):-o(I,C),D is C+1,o(N,D).
c([N|_],N).
c(_,N):-print(N),!,fail.
o(C,O):-char_code(C,O).

উদাহরণ:

?- m(['a','b','c','d','f']).
e
false.

?- m(['O','Q','R','S']).
'P'
false.

?- m(['x','z']).
y
false.

?- m(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z']).
v
false.

সামান্য ব্যাখ্যা:

m"মেন" পদ্ধতি, হয় nতালিকায় পরবর্তী প্রত্যাশিত চরিত্র উৎপন্ন হয়। cচালিয়ে যেতে, আর প্রত্যাশিত চরিত্র প্রিন্ট আউট এবং জানালা দিয়ে লাফ প্রত্যাশা পরবর্তী আইটেম মিলে যায়, তাহলে - তুলনা নেই।


1
চেয়ে খাটো fail: 0=1
মাদুর

3

সি ++ 14, স্ট্যান্ডার্ড গ্রন্থাগার, জেনেরিক ধারক প্রকার ( 87 86 বাইট)

[](auto a){return++*adjacent_find(begin(a),end(a),[](auto a,auto b){return a+1!=b;});}

নেমস্পেস থেকে ধারক প্রকারটি ::stdধরে নেওয়া হয়েছে (যেমন std::string, std::listবা std::vector। অন্যথায় using namespace std;বা অনুরূপ ধরে নেওয়া হবে)।

@ ভেনকে ধন্যবাদ, প্রিপ্রোসেসর হ্যাকিংয়ের সামান্য কিছুটা দিয়ে, আপনি এটি 82 বাইটে নামিয়ে আনুন (1 টি নতুন লাইন)

#define x [](auto a,int b=0){return++
x *adjacent_find(begin(a),end(a),x a!=b;});}

এটা দেখুন Live On Coliru

সি ++ 14 স্ট্যান্ডার্ড লাইব্রেরি নেই (এখনও জেনেরিক, 64 63 বাইট)

[](auto& a){auto p=*begin(a);for(auto c:a)if(c!=p++)return--p;}

আবার, কেবল নাম সন্ধানের জন্য সহায়তা প্রয়োজন কেবলমাত্র যদি কন্টেইনার নামস্থান থেকে না টাইপ হয় ::std(বা এর সাথে যুক্ত)

Live On Coliruজন্য std::stringযেমন

Live On Coliruজন্য char const[]যেমন


স্ট্রাইক আউট পাঠ্য এবং পরবর্তী পাঠ্যের মধ্যে আপনাকে একটি স্থান রাখতে হবে।
সিজে ডেনিস

@ সিজেডেনিস সম্পন্ন হয়েছে যাইহোক, আপনার বর্তমান প্রতিনিধি (2469) একটি সুন্দর সংখ্যা (3 * 823 হচ্ছে এবং দৃষ্টিশক্তভাবে (24) (69) যা জোড় (2 2 2 3) (3 23%) রয়েছে
সেখ


2

সি #, 104 বাইট

using System.Linq;a=>(char)Enumerable.Range(a.Min(),a.Max()-a.Min()).Except(a.Select(c=>(int)c)).First()

সম্পূর্ণ / ফর্ম্যাট সংস্করণ:

using System.Linq;

namespace System
{
    class P
    {
        static void Main()
        {
            Func<char[], char> f = a =>
                (char)Enumerable.Range(a.Min(), a.Max() - a.Min())
                                .Except(a.Select(c=>(int)c))
                                .First();

            Console.WriteLine(f(new[] { 'a', 'b', 'c', 'd', 'f' }));

            Console.ReadLine();
        }
    }
}

এডকার খুব চালাক লিনক সংস্করণ :s=>s.Select(e=>++e).Except(s).First()
চার্লি

@ কার্লোস আলেজো আমি দেখেছি আপনি এটি আপনার উত্তরে যুক্ত করেছেন তাই আমি আমার আপডেট করব না তবে হ্যাঁ এটি খুব চালাক। আমার সংস্করণটি করার থেকে এটি অনেক ছোট।
TheLethalCoder

2

এমএটিএল, 8 7 বাইট

@ লুইসকে ধন্যবাদ 1 বাইট সংরক্ষিত

tdqf)Qc

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

ব্যাখ্যা

      % Implicitly grab the input as a string
t     % Duplicate the string
d     % Compute the differences between successive characters
q     % Subtract 1 from each element
f     % Get the locations of all non-zero characters (1-based index)
)     % Extract that character from the string
Q     % Add one to get the next character (the missing one)
c     % Convert to character and display

@ লুইস মেন্ডো দুর্দান্ত, ধন্যবাদ!
সোয়েভার

2

এক্সেল, 110 + 2 = 112 বাইট

=CHAR(CODE(LEFT(A1))-1+MATCH(0,IFERROR(FIND(CHAR(ROW(INDIRECT(CODE(LEFT(A1))&":"&CODE(RIGHT(A1))))),A1),0),0))

অ্যারে সূত্র ( Ctrl+ Shift+ Enter) হিসাবে প্রবেশ করাতে হবে যা { }প্রতিটি প্রান্তে দুটি কোট যুক্ত করে কোঁকড়া বন্ধনী যুক্ত করে। ইনপুট একটি স্ট্রিং হিসাবে হয় A1, যা প্রতি ওপিতে ঠিক আছে ।

এটি এখন পর্যন্ত সংক্ষিপ্ত উত্তর নয় (এক্সেল খুব কমই হয়) তবে এটি করা যায় কিনা তা আমি পছন্দ করি।



2

সিজেএম , 6 বাইট (পুরো প্রোগ্রাম) / 7 বাইট (কোড ব্লক)

q),^W=

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

এটি একটি সম্পূর্ণ সিজে্যাম প্রোগ্রাম যা স্ট্যান্ডার্ড ইনপুট থেকে ইনপুট স্ট্রিংটি পড়ে এবং অনুপস্থিত চিঠিটি স্ট্যান্ডার্ড আউটপুটে প্রিন্ট করে। সিজেমে আসলে "পদ্ধতি" নেই, এটিই চ্যালেঞ্জটি জিজ্ঞাসা করে, তবে নিকটতম জিনিস সম্ভবত একটি এক্সিকিউটেবল কোড ব্লক হবে, এর মতো:

{),^W=}

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

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


ব্যাখ্যা: সম্পূর্ণ প্রোগ্রামে qইনপুট স্ট্রিং পড়ে এবং স্ট্যাকের উপরে রাখে। )তারপরে ইনপুট স্ট্রিংয়ের শেষ অক্ষরটি পপ করে দেয় এবং রেঞ্জ অপারেটর ,এটিকে নীচে কোড পয়েন্ট সহ সমস্ত অক্ষর সমেত একটি অ্যারে রূপান্তরিত করে (বর্ণমালায় বর্ণিত অক্ষরের আগে সমস্ত অক্ষর সহ)। সুতরাং, উদাহরণস্বরূপ, যদি ইনপুটটি ছিল cdfgh, তবে ),স্ট্যাকের পরে স্ট্রিংগুলি থাকবে cdfg(যেমন শেষ অক্ষরের সাথে সরানো ইনপুট) এবং ...abcdefgযেখানে ...নীচে ASCII কোড সহ অক্ষরের একগুচ্ছ দাঁড়িয়ে আছে a(অর্থাত্ মুছে ফেলা শেষ ইনপুটটির নীচে সমস্ত অক্ষর) চিঠি).

প্রতিসম সেট পার্থক্য অপারেটর ^তখন এই স্ট্রিংগুলিকে একক স্ট্রিংয়ের সাথে একত্রিত করে যা ঠিক সেই অক্ষরগুলিকে ধারণ করে যা কোনও একটি স্ট্রিংয়ে উপস্থিত হয়, তবে উভয় ক্ষেত্রেই নয় in এটি অক্ষরগুলিতে স্ট্রিংগুলিতে প্রদর্শিত ক্রমটি সংরক্ষণ করে, সুতরাং উদাহরণস্বরূপ ইনপুটটির cdfgজন্য ফলাফলটি আবার ),^আসবে ...abe, যেখানে ...আবার নীচে ASCII কোড সহ একগুচ্ছ অক্ষর রয়েছে a। অবশেষে, W=কেবল এই স্ট্রিংয়ের শেষ চরিত্রটি বের করুন, যা হ'ল অক্ষর eযা আমরা খুঁজতে চেয়েছিলাম (এবং বাকী অংশগুলি ত্যাগ করে)। প্রোগ্রামটি শেষ হয়ে গেলে, সিজেএম ইন্টারপ্রেটার স্পষ্টভাবে স্ট্যাকের বিষয়বস্তু মুদ্রণ করে।


বোনাস: গল্ফস্ক্রিপ্ট , 6 বাইট (সম্পূর্ণ প্রোগ্রাম)

),^-1>

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

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

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

অবশ্যই, গল্ফস্ক্রিপ্টের অন্তর্নিহিত আই / ও-র জন্য ধন্যবাদ, উপরের কোডটি স্নিপেট হিসাবেও ব্যবহার করা যেতে পারে যা স্ট্যাক থেকে একটি স্ট্রিং পড়ে এবং অনুপস্থিত অক্ষরযুক্ত একটি একক-অক্ষরযুক্ত স্ট্রিং দেয় returns অথবা, বরং, কোনও স্নিপেট যা আর্গুমেন্ট হিসাবে স্ট্যাকের একক স্ট্রিং নেয় এবং স্ট্যাকের প্রিন্টযোগ্য স্ট্রিং হিসাবে তার আউটপুট ফেরত দেয়, এটি একটি সম্পূর্ণ গল্ফস্ক্রিপ্ট প্রোগ্রাম।


6
কোড স্নিপেটগুলি ডিফল্টরূপে অনুমোদিত নয় ; শুধুমাত্র ফাংশন এবং সম্পূর্ণ প্রোগ্রাম হয়। সুতরাং আপনার সম্ভবত এটি q(প্রোগ্রাম), বা {...}(ব্লক) প্রয়োজন। যদিও পদ্ধতির জন্য +1
লুইস মেন্ডো

এই খুব চালাক!
ফল ধরেছে so

2

কাস্তে , 6 বাইট

→S-(ḣ→

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

এই ফাংশনটি ইনপুট হিসাবে একটি স্ট্রিং (অক্ষরের তালিকা) নেয় এবং আউটপুট হিসাবে একটি অক্ষর প্রদান করে।

ব্যাখ্যা

→S-(ḣ→
    ḣ→    Get the list of all characters from the null byte to the last character of the input
 S-       Subtract the input from this list
→         Get the last element of the result

2

পাইথন 2 - 76 বাইট

বিদ্যমান পাইথন 2 সমাধানের কাছে হেরে যায় তবে এটি কিছুটা ভিন্ন পদ্ধতির তাই আমি ভেবেছিলাম যে আমি এটি পোস্ট করেই করব:

lambda c:[chr(x)for x in range(ord(c[0]),ord(c[0]+26)if chr(x)not in c][0]

2

8 ম , 99 বাইট

যুক্তিসহ ব্যাখ্যা

অক্ষরের মধ্যে দূরত্ব যদি দুজনের চেয়ে বেশি হয় তবে একটি অনুপস্থিত চিঠি রয়েছে। প্রতিটি বর্ণের ASCII কোডের মধ্যে পার্থক্য গণনা করে অক্ষরের দূরত্ব প্রাপ্ত হয়।

কোড

: f ' nip s:each repeat over n:- 2 n:= if n:1+ "" swap s:+ . reset 1 then depth n:1- while! reset ;

উদার সংস্করণ

: f \ s -- c 
  ' nip s:each    \ convert each letter into its ASCII code and put them on stack
  repeat
    over
    n:- 2 n:=     \ check if there is a missing letter 
    if            
      n:1+        \ compute the ASCII code of missing letter
      "" swap s:+ \ convert ASCII code into printable character
      .           \ print out the missing letter
      reset 1     \ set condition to exit from while!
    then
    depth n:1-    \ verify if there are letters to check
  while!          
  reset           \ clean stack
;

ব্যবহার এবং উদাহরণ

ok> "abcdf" f
e
ok> "OQRS" f
P
ok> "xz" f
y
ok> "abcdefghijklmnopqrstuwxyz" f
v
ok> "ab" f

ok> "def" f

ok>

2

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

স্ট্রিং হিসাবে ইনপুট নেয়।

s=>(g=p=>(c=String.fromCharCode(n++))<s[p]?p?c:g(p):g(p+1))(n=0)

কিভাবে?

  • সূচনা: আমরা n = 0 এবং p = 0 দিয়ে শুরু করি এবং পুনরাবৃত্ত ফাংশন জি () কল করি ।

    g = p =>                                   // given p
      (c = String.fromCharCode(n++)) < s[p] ?  // if the next char. c is not equal to s[p]:
        p ?                                    //   if p is not equal to zero:
          c                                    //     step #3
        :                                      //   else:
          g(p)                                 //     step #1
      :                                        // else:
        g(p + 1)                               //   step #2
  • ধাপ # 1: আমরা বাড়ায় এন পর্যন্ত c = String.fromCharCode(n)হয় প্রথম অক্ষরে সমান ইনপুট স্ট্রিং এর [0]

  • পদক্ষেপ # 2: এখন যে আমরা সিঙ্ক্রোনাইজ করেছি, আমরা একই সাথে এন এবং পি উভয়ই বাড়িয়ে দেব যতক্ষণ c = String.fromCharCode(n)না আর [পি] এর সমান হয় ।

  • পদক্ষেপ # 3: আমরা : প্রত্যাশিত অক্ষর যা পাওয়া যায় নি।

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


1

জে, 20 বাইট

{&a.>:I.1 0 1&E.a.e.
  • a.e. এসকিআই চার্সেট জুড়ে ইনপুট অক্ষরের জন্য বুলিয়ান মাস্ক
  • 1 0 1&E.নতুন বুলিয়ান মাস্ক নির্দেশ 101করে যে অনুক্রমটি যদি সূচক থেকে শুরু হয়, অর্থাৎ, কোনও জায়গা খুঁজে বের করুন "স্কিপ" অনুক্রম শুরু হয়
  • I. match ম্যাচের সূচক, অর্থাৎ বাদ দেওয়া আগে অক্ষর
  • >: 1 দ্বারা বৃদ্ধি, অর্থাত্, এসকিআই চার্সেটের মধ্যে এড়ানো চরের সূচক
  • {&a. ascii চরসেট থেকে সেই সূচকটি বেছে নিন, অর্থাৎ এড়িয়ে যাওয়া চার্টটি ফিরিয়ে দিন

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


এটি আমার কাছে স্নিপেটের মতো দেখাচ্ছে।
এডম

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

@ অ্যাডাম হ্যাঁ এটি এই অর্থে যে এটি কোনও ভেরিয়েবলের জন্য বরাদ্দ করা যায় না তবে তার ডানদিকে ইনপুট ধরে নেয়। এটা কি আইনী নয়? আমি কোথাও এটি সম্পর্কে জিজ্ঞাসা করেছি এবং জানানো হয়েছিল যে এটি ঠিক আছে
জোনা

এপিএল / জে / কে সম্পর্কে আমার বোঝা হ'ল কোডটি অবশ্যই কোনও নামেই থাকতে পারে, অ্যাসাইনমেন্টের দ্বারা বা দেহরূপে একটি স্পষ্ট ক্রিয়া / ফাংশন (যাইহোক, সুস্পষ্ট ফর্মটির অবশ্যই স্পষ্ট ইনপুট থাকতে হবে)। স্নিপেট এমন একটি কোড যা ভেরিয়েবলের মানগুলি গ্রহণ করে এবং / অথবা একটি লাইনে আটকানো দরকার তবে তারা নিজেরাই দাঁড়াতে পারে না।
এডম

@zgrep না, এই কোডটি স্পষ্ট (নন-সারণি), তবে ডানদিকে তার যুক্তির প্রসঙ্গটি অনুপস্থিত। আমার এপিএল ফাংশন একটি সম্পূর্ণ সূক্ষ্ম ফাংশন যা একটি বন্ধনীকে বরাদ্দ করতে বা রাখতে পারে।
এডম

1

ES6, 125 বাইট:

(a=>((s,f)=>(r=(i,b)=>a[i]?r(i+1,b||(s[f](i)-s[f](i-1)-1&&String.fromCharCode(s[f](i-1)+1))):b)(1,0))(a.join(""),"charCodeAt"))

http://jsbin.com/vasoqidawe/edit?console

ফিরে ফাংশনটি অ্যারের সাথে কল করা দরকার

(["a","c"])

জয়ন ("") অপসারণ করে একটি স্ট্রিং দিয়ে অন্য একটি 9 টি বাইট সংরক্ষণ করতে পারে :

("ac")

ES6, 108 বাইট:

(a=>((s,f,o)=>(a.find((_,i)=>(o?++o:o=s[f](i))!==s[f](i)),String.fromCharCode(o)))(a.join(""),'charCodeAt'),0))

http://jsbin.com/tudiribiye/edit?console


1
বাঁধাই করা ??? কোড গল্ফ?
edc65

@ এডসি 65 এর কি দোষ? (দুঃখিত এটি যদি এন০০ বি হয় তবে আমার প্রথম গল্ফের কথা বলে :))
জোনাস উইলস

@ এডসি 65 কিন্তু আপনি সম্ভবত ঠিক বলেছেন, এটি 4 টি বাইট সাশ্রয় করে ...
জোনাস উইলস

a.join("")হতে পারেa.join``
user2428118


1

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

lambda a:chr((ord(a[0])+ord(a[-1]))*-~len(a)/2-sum(ord(x)for x in a))

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

কিছু ব্যাখ্যা যেমন আমরা তালিকার প্রথম এবং শেষ উপাদানগুলি জানি, আমরা সহজেই (চারক অঙ্কের অগ্রগতির সংক্ষিপ্ত সূত্রগুলি list + the missed charব্যবহার করে ) সমস্ত অক্ষরের কোডগুলির যোগফলটি গণনা করতে পারি । এই যোগফল এবং সমস্ত অক্ষরের কোডগুলির যোগফলের মধ্যে পার্থক্যটি মিস করা চিঠির কোড দেয়। list


1

আমি 2একই অ্যালগরিদম ব্যবহার করছি তা থেকে আমি বিচার করতে যাচ্ছি , যদিও আমি খুব সহজেই 05AB1E জানি না :)
লিকি নুন

@ লেকিউন ওয়েল, আমিও অ্যালগোরিদমের কথা ভেবেছিলাম ...
এরিক দ্য আউটগোল্ফার

আমি সবেমাত্র আমার অ্যালগরিদম পরিবর্তন করেছি।
লিকি নুন

@ লিক্যনুন যাইহোক, এটি 05AB1E এর মধ্যে আর বেশি হবে longer
এরিক আউটগল্ফার

আমি কেবলমাত্র অন্য একটি অ্যালগরিদমের কথা ভেবেছিলাম যার মধ্যে 2 রয়েছে , এটি আপনার হতে পারে ...
লিকি নুন

1

এপিএল (ডায়ালগ) , 17 বাইট

(⊃⎕AV/⍨∨\∧~)⎕AV∘∊

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

⎕AV∘∊ বুলিয়ান: এ প্রতিটি অক্ষর একটি tomic ভী ECTOR (চরিত্র সেট থাকে) যুক্তির সদস্য?

() নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

 প্রথম উপাদান

⎕AVএকজন tomic ভী ECTOR (চরিত্র সেট থাকে)

/⍨ যেটি

∨\ প্রাথমিক অনুসরণ করে (যুক্তির সদস্য)

 কিন্তু

~ (যুক্তির সদস্য) নয়

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