নির্দিষ্ট সূচীতে স্ট্রিংয়ের উপাদান


13

একটি স্ট্রিং sএবং একটি অ-নেতিবাচক সংখ্যা nপ্রদত্ত দৈর্ঘ্যের চেয়ে কম s, অক্ষরের nআঞ্চলিক অবস্থানের আউটপুট দেয় s

0-ইনডেক্সিং এবং 1-ইনডেক্সিং অনুমোদিত। 1-সূচকের জন্য, nইতিবাচক এবং দৈর্ঘ্যের চেয়ে কম বা সমান হবে s

s কেবল মুদ্রণযোগ্য অক্ষর নিয়ে গঠিত।

যে কোনও যুক্তিসঙ্গত ইনপুট / আউটপুট অনুমোদিত is স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।

টেস্টকেস (0-সূচক):

n s        output
0 "abcde"  a
1 "abcde"  b
2 "a != b" !
3 "+-*/"   /
4 "314159" 5

টেস্টকেসগুলি (1-ইনডেক্সিং):

n s        output
1 "abcde"  a
2 "abcde"  b
3 "a != b" !
4 "+-*/"   /
5 "314159" 5

এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।


13
আমি এটিকে অগ্রাহ্য করেছি কারণ এটি আসলে কোনও প্রোগ্রামিং বা গল্ফিং চ্যালেঞ্জ নয়; এখানে মূলত যা জিজ্ঞাসা করা হচ্ছে তা হ'ল কোন কাজের ক্ষেত্রে কাজের জন্য সবচেয়ে কম অন্তর্নির্মিত ভাষা রয়েছে।
শেগি

15
@ শ্যাগি একই অন্যান্য আরও অনেক সহজ চ্যালেঞ্জের জন্য যেমন দুটি সংখ্যা যুক্ত করা, কোনও সংখ্যার প্রাইম হয় কিনা তা পরীক্ষা করা বা "হ্যালো, ওয়ার্ল্ড!" প্রিন্ট করা। এগুলি এমন অনেক ভাষায় বিরক্তিকর যা এগুলি বাক্স থেকে বাইরে বের করতে পারে, তারা আরও বেশি আদিম ভাষার জন্য আকর্ষণীয় চ্যালেঞ্জ হতে পারে যা তাদের নিজস্ব বাস্তবায়ন রোল করতে হয়। এছাড়াও, আরও জটিল কিছু সাধারণত সেই ভাষাগুলি সম্পর্কে জিজ্ঞাসা করার জন্য খুব বেশি, তাই তাদের জন্য একটি আউটলেট থাকা ভাল। তুচ্ছ চ্যালেঞ্জগুলি যদি আপনার জন্ম নেয়, তবে তাদেরকে অযৌক্তিক ভাষায় করার চেষ্টা করুন।
মার্টিন এন্ডার

উত্তর:



7

এলিস , 5 বাইট

I&IO@

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

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

ব্যাখ্যা

I   Read a character and push its code point.
&I  Read that many more characters and push them.
O   Output the last one we read.
@   Terminate the program.

abysmal- আমি ভেবেছিলাম আপনি এটি এক্সডি করেছেন
স্টিফেন

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

6

পাইথন, 15 বাইট

str.__getitem__

অথবা

lambda s,i:s[i]

উভয়ই 2 টি আর্গুমেন্ট গ্রহণ করে: স্ট্রিং এবং সূচি। 0-ইন্ডেক্স।


আমি বিস্মিত উভয় পদ্ধতির একই দৈর্ঘ্য আছে।
লিকি নুন

6

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

(!!)

0 ভিত্তিক সূচক। ব্যবহারের উদাহরণ: (!!) "Hello" 1-> 'e'


5

অক্টোটা, 10 বাইট

@(s,n)s(n)

একটি স্ট্রিং sএবং একটি সংখ্যা nইনপুট হিসাবে নেয় এবং এর nতম অক্ষরটি প্রদান করে s


5

রেটিনা , 28 20 19 বাইট

ব্যালান্সিং গ্রুপগুলি ব্যবহার না করে @ মার্টিনএেন্ডারকে 8 টি বাইট সংরক্ষণ করা হয়েছে

^.+পরিবর্তে ব্যবহার করে @ mbomb007 কে 1 বাইট ধন্যবাদ সংরক্ষণ করা হয়েছে^\d+

^.+
$*
+`1¶.
¶
!1`.

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

প্রোগ্রামটি 0-ইনডেক্সড।


একটি বাইট সংরক্ষণ \dকরতে পরিবর্তন করুন .
mbomb007

@ mbomb007 টিপটির জন্য ধন্যবাদ :)
ব্যবহারকারী 41805


3

এলিস , 10 বাইট

/@!O?]&
 I

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

প্রথম লাইনে স্ট্রিং এবং দ্বিতীয় লাইনে 0-ভিত্তিক সূচক আশা করে।

ব্যাখ্যা

বিল্ট-ইনগুলির সম্পদ থাকা সত্ত্বেও, এলিসে স্ট্রিং ইনডেক্সিংয়ের অস্তিত্ব নেই। কারণটি হ'ল এর জন্য এটি একটি পূর্ণসংখ্যা এবং স্ট্রিং প্যারামিটার উভয়ই প্রয়োজন এবং এলিসের সমস্ত কমান্ডগুলি কঠোরভাবে পূর্ণসংখ্যা বা স্ট্রিংয়ের সাথে স্ট্রিংয়ের পূর্ণসংখ্যা।

সাধারণভাবে, স্ট্রিংগুলির যে কোনও ক্রিয়াকলাপের প্রয়োজন হয় বা পূর্ণসংখ্যার ফলাফলের জন্য প্রধান উপায় হ'ল টেপের উপর স্ট্রিংটি অর্ডিনাল মোডে সঞ্চয় করা, যা আপনি কার্ডিনাল মোডে পূর্ণসংখ্যার সাথে ম্যানিপুলেট করতে পারেন।

/    Reflect to SE. Switch to Ordinal. While in Ordinal mode, the IP bounces
     diagonally up and down through the program.
I    Read one line from STDIN and push it.
!    Store the string on the tape. This writes the character codes into consecutive
     tape cells starting at the tape head. (It also writes a -1 at the end as a
     terminator, but the tape is initialised to -1s anyway).

     The next few commands are junk that luckily doesn't affect the program:

?      Load the string from the tape and push it to the stack again.
&      Fold the next command over this string. That is, for each character
       in the string, push that character, then execute the command.
?      So we're folding "load" over the string itself. So if the string is "abc"
       we'll end up with "a" "abc" "b" "abc" "c" "abc" on the stack.
!      Store the top copy of "abc" on the tape (does nothing, because it's
       already there).

     Now the relevant part of the program continues.

I    Read another line from STDIN, i.e. the string representation of the index.
/    Reflect to W. Switch to Cardinal. The IP wraps to the last column.
&    Implicitly convert the string to the integer value it represents and
     repeat the next command that many times.
]    Move the tape head right that many cells. Note that Ordinal and Cardinal
     mode have separate tape heads, but they are initialised to the same cell.
?    Load the value from that cell, which is the code point of the character
     at the given index.
O    Print the corresponding character.
!    This discards or converts some of the strings on the stack and writes some
     value back to the tape, but it's irrelevant.
@    Terminate the program.

1
"বিল্ট-ইনগুলির সম্পদ থাকা সত্ত্বেও, এলিসে স্ট্রিং ইনডেক্সিংয়ের অস্তিত্ব নেই" " > _>
লিকি নুন

1
@ ল্যাকিয়ুন আপনি যদি এটি খারাপ মনে করেন তবে স্ট্রিংয়ের দৈর্ঘ্য পাওয়ার জন্য কোনও বিল্ট ইনও নেই। ;)
মার্টিন ইন্ডার



3

ব্র্যাচল্যাগ , 2 বাইট

∋₎

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

ব্যাখ্যা

এর ফলাফলকে ইনপুটটির উপাদানগুলির সাথে এক করে দেয়। সঙ্গে হিসাবে সাবস্ক্রিপ্ট, এটা তার আউটপুট ঐক্যবদ্ধ করবে Iতম উপাদান Sসঙ্গে, [S,I]ইনপুট হিসাবে।


3

কিউবিক্স , 8 বাইট

t@poIA//

এই দ্রবণটি 1-সূচকযুক্ত। ইনপুটটিতে প্রথমে একটি সংখ্যা, তারপরে একটি বিভাজক (এটি কোনও অঙ্ক বা ক নয় .) এবং তারপরে স্ট্রিং সমন্বিত হওয়া উচিত।

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




2

সিলোস , 43 বাইট

loadLine
readIO
a=256+i
a=get a
printChar a

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

যথেষ্ট সহজ।


সিলোস ফিরে এসেছে \ o /
লিকি নুন

1
হ্যাঁ, আমি উইন্ডো লোডিং স্ক্রিন সহ আরও অনেকগুলি ক্যালেনজ উত্তর দেওয়ার চেষ্টা করছি। আমি গ্রাফিকাল আউটপুট এবং গ্রন্থাগারগুলির ক্ষেত্রে এটি যে বিন্দুতে চাই তা পছন্দ করি তবে আমি চেষ্টা করে এটি প্রতিযোগিতামূলক করার জন্য একটি সংক্ষেপণ স্কিম বিকাশ করতে চাই। মূলত এটি সংকলিত ইনট [] যা বাইট স্ট্রিম পড়ার মাধ্যমে উত্পন্ন করা যায়। @ লিকিউন
রোহান ঝুনঝুনওয়ালা

2

বিএফ , 9 বাইট

,[->,<]>.

সূচকটি একটি চরের অক্ষরের কোডের মাধ্যমে নেওয়া হয় (এলিস জমা দেওয়ার মতো)। যে অনুসরণ করে, আমরা স্ট্রিং আছে।

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

টিআইও লিঙ্কটি ব্যাশের মোড়ক ব্যবহার করে এবং শিরোনাম ফাইলটিতে ইনপুট পরিবর্তন করা যায় (মোড়কের কারণটি যাতে আমরা বাইটগুলি দেখতে পারি)।


লেজিট টিআইও হ্যাকিং: পি
লিকি নুন


1
আমি বলেছিলাম এটা বৈধ।
লিকি নুন

এর মতো অন্যান্য টিআইও ভাষায় ইনপুট করার কোনও উপায় আছে কি? এসএমবিএফের মতো?
mbomb007

@ mbomb007 আপনি অন্যান্য ভাষাগুলির মোড়ক ব্যবহার করে তা করতে সক্ষম হবেন। এখানে এসএমবিএফ
ব্যবহারকারীর

2

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

s=>n=>s[n]

0-ভিত্তিক সূচক ব্যবহার করে।

-1 বাইট @ লিকি নুনকে ধন্যবাদ

f=
s=>n=>s[n]
console.log(f("abcde")(0));
console.log(f("abcde")(1));
console.log(f("a != b")(2));
console.log(f("+-*/")(3));
console.log(f("314159")(4));


1
আপনি s=>i=>s[i]বাইট সংরক্ষণের জন্য কার্চিং ব্যবহার করতে পারেন
লিকি নুন

1
প্রতিবার যখন আমি এর মতো উত্তর দেখি তবে তা আমাকে বিরক্ত করে কারণ আমি জানি যে সি # সংস্করণটি সর্বশেষে অর্ধ কোলনের জন্য সর্বদা এক বাইট দীর্ঘ হয়। এবং এটি এখানে প্রকৃতপক্ষে
TheLethalCoder

2

> <> , 13 + 1 = 14 বাইট

-vইনপুট নেওয়ার জন্য পতাকাটির জন্য +1

:?!\i~1-
io;\

পতাকা সম্পর্কে আমাকে অবহিত করার জন্য এবং আমাকে 3 বাইট সংরক্ষণ করার জন্য @ সটেনবার্গকে ধন্যবাদ -v!

কমান্ড লাইন আর্গুমেন্টের সাথে সূচকটি ইনপুট করুন -v [index](0-indexed) এবং স্টিডিনের মাধ্যমে স্ট্রিং ইনপুট করুন।

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

ব্যাখ্যা

স্ট্যাক উপরে সূচক দিয়ে শুরু হয়।
:এটি সদৃশ।
?সূচক 0 হলে পরবর্তী অক্ষরটিকে উপেক্ষা করুন (এটি স্ট্যাক থেকে পপিং করা)
এটি শূন্য \হলে নীচে যাওয়ার দিক প্রতিফলিত করে। তারপরে, এটি পরবর্তীটির সাথে ডানদিকে প্রতিফলিত হয় \। এটি চারপাশে মোড়ানো এবং iএনপুট একটি চরিত্র কার্যকর oকরে , এটি উত্পন্ন করে এবং ;কার্যকর করা বন্ধ করে।
যদি তা না হয় !তবে পরবর্তী নির্দেশাবলী এড়িয়ে যান, সুতরাং এটি নিচে যায় না।
i~একটি অক্ষর ইনপুট করে এবং তারপরে তা তাত্ক্ষণিকভাবে তা বাতিল করে দেয়। সূচক থেকে
11.
-বিয়োগ 1করে, সুতরাং ইনপুটটিতে একটি অক্ষর গ্রাস হয়ে যায় এবং সূচি হ্রাস হয়। প্রোগ্রামটি প্রায় ফিরে ফিরে আসে :


1
নেই -v <x>কমান্ড লাইন প্যারামিটার, যা রাখা স্ট্যাকের initialises <x>প্রোগ্রাম শুরু। অনলাইনে এটি ব্যবহার করে দেখুন
স্টেইনবার্গ

2

গাজর , 16 বাইট

$^//.{#}/S1//.$/

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

ইনপুট ফর্ম্যাটটি হ'ল:

string
index

এবং প্রোগ্রামটি 1-সূচকযুক্ত।

ব্যাখ্যা

গাজরের বেশ কয়েকটি বৈশ্বিক পরিবর্তনশীল রয়েছে, প্রতিটি প্রকারের জন্য একটি: স্ট্রিং, ফ্লোট এবং অ্যারে (অন্যরা শীঘ্রই প্রয়োগ করা হবে)। প্রোগ্রামটি স্ট্রিং-মোডে শুরু হয়, যেখানে সমস্ত অপারেটর গ্লোবাল স্ট্রিং ভেরিয়েবলকে প্রভাবিত করবে। এবং আমি এই ভেরিয়েবলগুলিকে "স্ট্যাক" বলি।

(উদাহরণ ইনপুট abcdef\n3:)

$                          Get the first line of the input and set the stack-string to this value
^                          Exit caret-mode
                           stack-string = "abcdef"
/                          Operator (behaves differently depending on the argument)
 /.{#}/                     And the argument to this operator is a regex, so this program gets the matches of this regex into the stack-array
  .                          Any character
   {#}                       Pops a line from the input. So now this evaluates to # of any character where # is the second line of the input (in this case, 3)
                           stack-array = ["abc"]
                           And now we just need to get the last character in this string, but first
S1                         Join the array on the number 1 and set this to the stack-string. Because the array only contains one element, the number 1 does not appear in the stack-string.
                           stack-string = "abc"
/                          Operator; because the argument is a regex, this retrieves the matches of the regex:
 /.$/                       Get the last character in the string
                           stack-array = ["c"]

এখন এটি দৈর্ঘ্যের একটি স্ট্রিং সহ একটি উপাদান উপাদান অ্যারে প্রদান করে তবে এটি ওয়েবসাইটটিতে একটি স্ট্রিং হিসাবে দেখানো হয়েছে।

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


1

ব্যাচ, 32 বাইট

@set/ps=
@call echo(%%s:~%1,1%%

রাউন্ডআপ sstdin থেকে নেয় nএকটি কম্যান্ড-লাইন প্যারামিটার হিসাবে।


1

গল্ফস্ক্রিপ্ট , 7 4 বাইট

~1/=

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

আমি গল্ফস্ক্রিপ্টে স্তন্যপান করি, তাই আমি মার্টিন ইেন্ডারের সাহায্যকে মূল্য দিই ।


এর দরকার নেই [
মার্টিন এন্ডার

তবে সাধারণভাবে যদি আপনি স্ট্রিং থেকে অক্ষর চান, আপনি কেবল কোড পয়েন্টটি ফিরে রূপান্তর না করে প্রথমে স্ট্রিংটি বিভক্ত করুন:~1/=
মার্টিন ইন্ডার

@ মার্টিনেন্ডার এবং এভাবেই আপনি অ্যালিসকে পরাজিত করলেন ...
এরিক দি আউটগলফার

1

টার্টলিড , 9 বাইট

!?:[*l+].

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

ব্যাখ্যা:

প্রথমে, টার্টল্ড গ্রিড ভিত্তিক, একটি টার্টল জিনিস। গ্রিড সেল রয়েছে কচ্ছপ বাম, উপরে, নীচে এবং ডানদিকে যেতে পারে এবং গ্রিড কোষগুলিতে জিনিস লিখতে পারে।

[the first grid cell the turtle starts on is marked with a *]
!         input the string into the string variable

 ?        input the number into the number variable

  :       this command takes the number variable and moves right that many.
          hence this moves right by the amount inputted

   [*  ]  this is an `until` loop. the * there means that `until` the turtle ends the loop
          on a grid cell with * written on it (that is, the first cell), it will execute
          the code inside again and again

     l+   the code inside the while loop. the `l` moves the turtle left, and the +
          increments the string pointer. the string pointer is used with the string var;
          when you want to write something from the string, you use `.`, which writes
          the pointed char. the pointed char is the n-th character of the string, n being
          the value of the string pointer. this code will execute until the l moves
          the turtle back on to the origin cell. since we moved right by the number
          inputted, this will increase the string pointer (which starts at 1)
          by the amount inputted.

       .  write the pointed char, which was dealt with in the previous comment.
          if 0 is inputted, turtle stayed on the origin square, and executed none
          of the loop, and turtle writes the first char of string input.
          if 1 is inputted, turtle moved one right, moved one left and incremented
          string pointer once, which means the second char is written. and so on.


          [the char of input has been written over the origin square]
          [implicitly the grid is outputted, which has spaces and blank lines taken out]
          [this is the requested char outputted, plus an unavoidable trailing newline
          due to how I made the interpreter. sue me]

1

ক্লোজার, ৩

nth

: পি যখন এর জন্য অন্তর্নির্মিত থাকে তখন আপনি কী করতে পারেন ? এটি তালিকা, ভেক্টর, স্ট্রিং এবং সিকোয়েন্সগুলিতে কাজ করে। ব্যবহৃত ডিটাটাইপের উপর নির্ভর করে এটি হয় ও (1) বা ও (এন) হয়।



1

ডাইভিল , 4 বাইট

_[_]

একটি বেনামি ফাংশন তৈরি করে যা a Stringএবং an নেয় intএবং a প্রদান করেchar

ব্যবহার:

let f: (String, int) -> char = _[_]
print f("abc", 1) // b


1

কিউ বেসিক 4.5, 24 বাইট

INPUT a$,b:?MID$(a$,b,1)

অনেকটাই অকপট.



1

গণিত, 18 বাইট

#~StringTake~{#2}&

প্রাথমিক সমাধান, তবে দুর্ভাগ্যক্রমে ফাংশনটির নামটি বেশ দীর্ঘ।


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