নির্দিষ্ট সূচকে অক্ষর সরান


33

( নির্দিষ্ট সূচকে স্ট্রিমেন্টের উপাদান দ্বারা ভারী অনুপ্রাণিত )

একটি স্ট্রিং sএবং একটি পূর্ণসংখ্যা দেওয়া nইনডেক্সের প্রতিনিধিত্ব করে, -th অবস্থানটিতে অক্ষরের সাথে sআউটপুট ।sn

0-ইনডেক্সিং এবং 1-ইনডেক্সিং অনুমোদিত।

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

sমুদ্রণযোগ্য এএসসিআইআই অক্ষর কেবল ( \x20-\x7Eবা  মাধ্যমে ~) নিয়ে গঠিত।

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

টেস্টকেসগুলি (0-সূচিত):

n s        output
0 "abcde"  "bcde"
1 "abcde"  "acde"
2 "a != b" "a = b"
3 "+-*/"   "+-*"
4 "1234.5" "12345"
3 "314151" "31451"

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

n s        output
1 "abcde"  "bcde"
2 "abcde"  "acde"
3 "a != b" "a = b"
4 "+-*/"   "+-*"
5 "1234.5" "12345"
4 "314151" "31451"

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


9
আর কেউ উত্তর দেয় না, সি #
জিতছে

আমরা কি ধরে নিতে পারি যে সেই আইডেক্সে চরটি একবারে উপস্থিত হয়েছিল?
প্রোগ্রামার

1
@ প্রোগ্রামার ৫০০০ সর্বশেষ পরীক্ষার কেস 3, 314151-> 31451। আমি ধরব না
TheLethalCoder

@ প্রোগ্রামার ৫০০ নং, শেষ পরীক্ষার কেসটি দেখুন।
ইটিএইচ প্রডাকশনগুলি

2
সম্ভবত কোনও লিডারবোর্ড সহায়ক হবে, ইতিমধ্যে ইতিমধ্যে অনুসন্ধানের জন্য প্রচুর উত্তর রয়েছে।
মিস্টার এক্সকোডার

উত্তর:



13

এলিস , 13 12 বাইট

লিওকে 1 বাইট সংরক্ষণ করার জন্য ধন্যবাদ

/oI\!e]&
@ q

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

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

ব্যাখ্যা

/    Reflect to SE. Switch to Ordinal. While in Ordinal mode, the IP bounces
     diagonally up and down through the code.
I    Read the first line of input (the string).
!    Store the string on the tape, which writes the characters' code points to 
     consecutive cells (the tape is initialised to all -1s).
]    Move the tape head right. This moves it by an entire string, i.e. to the
     cell after the -1 that terminates the current string.
     The IP bounces off the bottom right corner and turns around.
]    Move the tape head right by another cell.
!    Store an implicit empty string on the tape, does nothing. It's actually
     important that we moved the tape head before this, because otherwise it
     would override the first input code point with a -1.
I    Read the second line of input (the index) as a string.
/    Reflect to W. Switch to Cardinal.
     The IP wraps around to the last column.
&]   Implicitly convert the first input to the integer value it contains
     (the index) and move the tape head that many cells to the right, i.e.
     onto the character we want to delete. Note that Ordinal and Cardinal mode
     have two independent tape heads on the same tape, so the Cardinal tape
     head is still on the first cell of the string input before we do this.
e!   Store a -1 in the cell we want to delete.
\    Reflect to SW. Switch to Ordinal.
q    Push the entire tape contents as a single string. This basically takes
     all cells which hold valid code points from left to right on the tape 
     and concatenates the corresponding characters into a single string. Since
     we wrote a -1 (which is not a valid code point) over the target character,
     this will simply push the entire input string without that character.
o    Output the result.
@    Terminate the program.


10

কে (কোনা), 1 বাইট

_

ভালবাসা অন্তর্নির্মিত। 0 ভিত্তিক সূচক। ব্যবহার:

k)"abcdef" _ 3
"abcef"

'কাজের সঠিক সরঞ্জামটি ব্যবহার করতে' পুরো নতুন অর্থ প্রদান করা।
এমডি এক্সএফ

1
হা - আপনি কাজের সঠিক সরঞ্জামটি দেখতে চান? কোডগলফ.স্ট্যাকেক্সেঞ্জাওয়েটা
সাইমন মেজর

আরও ছোট একটি প্রোগ্রামের সাহায্যে এটি করার একটি উপায় আমি আবিষ্কার করেছি। দুর্ভাগ্যক্রমে, এই মন্তব্য বাক্সে ব্যাখ্যা করার মতো পর্যাপ্ত জায়গা নেই ;-)
মগ

8

হাস্কেল , 28 24 বাইট

-4 বাইট লাইকোনিকে ধন্যবাদ, এই সংস্করণটি 1-সূচকযুক্ত।

s#n=take(n-1)s++drop n s

পুরানো উত্তর:

f(s:t)0=t;f(s:t)n=s:f t(n-1)

একটি সাধারণ পুনরাবৃত্তির ফাংশন যা মানটি নেয়, এটি 0-সূচকযুক্ত।

আমার প্রথমবারের কোড-গল্ফিং তাই সম্ভবত এটি সর্বোত্তম সমাধান নয়। আচ্ছা ভালো.


2
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

1
এছাড়াও আপনি হাসকেলে গল্ফ করার টিপস সংগ্রহে আগ্রহী হতে পারেন ।
লাইকনি

7

গণিত, 18 বাইট

1-ইন্ডেক্স

#2~StringDrop~{#}&

ইনপুট

[১, "অ্যাবসিডি"]

ধন্যবাদ মার্টিন ইন্ডার


4
আমার মতে, "যে কোনও যুক্তিসঙ্গত ইনপুট / আউটপুট অনুমোদিত হয়" ইনপুটটির মতো গ্রহণের অনুমতি দেয় ["abcde", {1}], StringDropএকা একা এই কৌশলটি চালায়। আপনি কি মনে করেন? (আপনি সম্ভবত স্পষ্টভাবে বলতে চাইবেন যে এটি 1-সূচকযুক্তও রয়েছে)) গণিতের উত্তর পোস্ট করা লোকগুলি দেখে আমি সর্বদা আনন্দিত :)
গ্রেগ মার্টিন



5

জিসিসি সি ফাংশন, 25

1-ভিত্তিক সূচক।

f(n,s){strcpy(s-1,s+=n);}

এখানে প্রচুর সংজ্ঞায়িত আচরণ তাই বিপথগামী বেগের জন্য নজর রাখুন :

  • strcpy()Man পৃষ্ঠা বলছেন অনুলিপি বস্তুর মধ্যে স্থান, যা ওভারল্যাপ, ব্যবহার undefined হয় নেয় । এখানে স্পষ্টতই এসআরসি এবং ডেস্ট স্ট্রিংগুলির ওভারল্যাপ রয়েছে তবে এটি কাজ করছে বলে মনে হয়, তাই হয় গ্লিবসি আরও বেশি যত্নশীল বা আমি ভাগ্যবান হয়ে উঠছি।
  • উত্তরটির s+=nআগে যে ঘটনা ঘটে তার উপর নির্ভরশীল s-1 মান এমন কোন নিশ্চয়তা দেয়, এবং আসলে অনির্ধারিত আচরণ হিসাবে এই আউট কল। আবার, এটি x86_64 লিনাক্সের gcc সংকলকটির সাথে প্রয়োজনীয় হিসাবে কাজ করছে বলে মনে হচ্ছে।

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


2
স্ট্যাক-ভিত্তিক এবিআই, যেমন x86 strcpyএর আর্গুমেন্টগুলি ডান থেকে বাম ক্রমে চাপ দেওয়া দরকার, যা আচরণটি ব্যাখ্যা করবে, তবে আপনি বলেছিলেন যে আপনি ব্যবহার করছেন x86_64যা রেজিস্টার ব্যবহার করে ... সম্ভবত সংকলকটি গল্ফ করার সিদ্ধান্ত নিয়েছে উত্পন্ন কোড এবং সিদ্ধান্ত নিয়েছে যে s + = n গণনা করা প্রথমে গল্ফিয়ার ছিল!
নিল

5
সি উত্তর দিলে আমি এটি পছন্দ করি "এটির কাজ করার কোনও আনুষ্ঠানিক কারণ নেই, তবে এটি যাইহোক, তাই ... হ্যাঁ।"
কোয়ান্টিন

পবিত্র জঞ্জাল। এটি আমার পানি থেকে বের করে দেয়। খুব চিত্তাকর্ষক!
এমডি এক্সএফ 20'6

1
@ কুইন্টিন এটি কোড-গল্ফ সম্পর্কে একটি মজাদার বিষয় - আপনাকে সবচেয়ে ভয়ঙ্কর, অনিরাপদ কোড লিখতে অনুমতি দেওয়া - এমনকি উত্সাহিত - এটি সাধারণত একটি ফায়ারিং অপরাধ ;-)
ডিজিটাল ট্রমা

ডাউনওয়েটের কারণটি আমি জানতে চাই ...
ডিজিটাল ট্রমা

4

এমএটিএল , 3 বাইট

&)&

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

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

ব্যাখ্যা

&    % Specify secondary default number of inputs/outputs for next function
)    % Implicitly input string and number. Index: with & it pushes the char
     % defined by the index and the rest of the string
&    % Specify secondary default number of inputs/outputs for next function
     % Implicitly display (XD): with & it only displays the top of the stack

সমস্ত পরীক্ষার ক্ষেত্রে সংশোধিত সংস্করণে `...Tকোনও ইনপুট না পাওয়া পর্যন্ত কোডটি একটি অসীম লুপের মধ্যে থাকে। প্রতিটি পুনরাবৃত্তির শেষে প্রদর্শন ফাংশন ( XD) স্পষ্টভাবে বলা হয় এবং xপরবর্তী পুনরাবৃত্তির জন্য এটি প্রস্তুত করতে স্ট্যাকটি সাফ করা হয় ( )।


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

2
@ এইচটি প্রোডাকশন যদি আপনার কোনও নামের প্রয়োজন হয় তবে আমি তাদের মেটা-ফাংশন বলি , কারণ তারা ফাংশনগুলি পরিবর্তন করে
লুইস মেন্ডো

@ লুইস মেন্ডো আমি মনে করি আনুষ্ঠানিক নামটি অপারেটর , একটি লা গাণিতিক অপারেটর (ওরফে উচ্চ-অর্ডার ফাংশন) হবে।
ঐ মেগো

4

ভিম, 7 বাইট

jDk@"|x

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

এটি দুটি লাইন প্রত্যাশা করে; স্ট্রিং সহ একটি এবং সংখ্যা সহ একটি।

  1. দুই লাইনে যান, নাম্বারটি রেজিস্টারে কপি করুন
  2. প্রথম লাইনে যান এবং তারপরে @ "| সহ নিবন্ধের কলামে যান
  3. কার্সারের নীচে অক্ষর মুছুন

প্রায় একইরকম আরেকটি মজার সমাধান হ'লjD@"gox
ডিজেএমসিএমহেম

পতাকাঙ্কিত -> সমাপ্তি -> কোডগল্ফ.স্ট্যাককেক্সচেঞ্জের ডুপ্লিকেট aa / 121581 / 61563 : পি মজা করছে, তবে সেগুলি লক্ষণীয়রূপে মিল।
এমডি এক্সএফ

তারা! প্রথমে 7 টি অক্ষরে নামার জন্য কি কোনও পুরষ্কার রয়েছে? :
পি

4

জাভা 8, 39 বাইট

s->n->s.substring(0,n)+s.substring(n+1)

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

জাভা 7, 67 বাইট

String c(int n,String s){return s.substring(0,n)+s.substring(n+1);}

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


ধরে নেওয়া যায় এটি কাজ করে, 46 বাইটের জন্য এটি "বিল্ট ইন" s->n->new StringBuilder(s).deleteCharAt(n)+"";যদিও এটি বেশি দীর্ঘ।
TheLethalCoder

@TheLethalCoder এটি কার্যকরভাবে কাজ করে। তবে এটি আসলে কিছুটা দীর্ঘ। ওহ, এবং সর্বদা কোডগল্ফের StringBufferপরিবর্তে ব্যবহার করুন StringBuilder। ;)
কেভিন ক্রুইজসেন

আমি আপনার উত্তরে এটি ব্যবহার করলাম বাফারের উপর আহা কৌশলটি :)
TheLethalCoder


4

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

এটির জন্য সম্প্রতি প্রকাশিত জিএইচসি 8.4.1 (বা তার বেশি) প্রয়োজন। এখন <> , সেমিগ্রুপগুলিতে একটি ফাংশন হিসাবে প্রিলিওডে রয়েছে। এটি সেমিগ্রুপ ফাংশনে বিশেষভাবে কার্যকর

take<>drop.succ

এটি অনলাইন চেষ্টা করুন!
টিও যেহেতু জিএইচসির একটি পুরানো বার্সন ব্যবহার করছে, তাই আমি শিরোনামটি আমদানি করেছি <>


4

আর, 40 বাইট

কেবল বিভিন্ন উপায়ে দেখাতে যান, যার মধ্যে বিশেষত কমপ্যাক্ট কোনওটিই না, আপনি আর-এ স্ট্রিং দিয়ে ঝাঁকুনি দিতে পারেন।

function(s,n)intToUtf8(utf8ToInt(s)[-n])





3

জেএস (ইএস 6), 41 32 31 বাইট

y=>i=>y.slice(0,i++)+y.slice(i)

উপর ভিত্তি করে এই । কারিরিংয়ের মাধ্যমে ইনপুট নেয়, প্রথমটি স্ট্রিং, দ্বিতীয়টি সূচক।

-9 ধন্যবাদ জোহানকার্লসনকে

-1 ধন্যবাদ ETH প্রডাকশনগুলিতে


3

জেলি , 3 বাইট

Ṭœp

(1-ভিত্তিক) সূচক এবং স্ট্রিং (সেই ক্রমে) এবং ফলাফল মুদ্রণ করে একটি সম্পূর্ণ প্রোগ্রাম।

ডায়াডিক ফাংশন হিসাবে এটি দুটি অংশের একটি তালিকা ফেরত দেয়।

প্রকৃতপক্ষে সূচকগুলি এন সূচকগুলির একটি তালিকা হতে পারে , সেক্ষেত্রে এটি এন -1 অংশগুলির একটি তালিকা ফেরত দেয় ।

এটি অনলাইন চেষ্টা করুন! , বা একটি পরীক্ষা স্যুট দেখুন

কিভাবে?

Ṭœp - Main link: number i, string s                   e.g. "fish 'n chips", 6
Ṭ   - untruth - get a list with 1s at the indexes of i      000001 <-- i.e. [0,0,0,0,0,1]
 œp - partition s at truthy indexes without borders       ["fish ","n chips"]
    - implicit print                                        fish n chips

একাধিক সূচী ব্যবহারের উদাহরণ হিসাবে:

      "fish and chips", [6,8]
Ṭ      00000101 <- i.e. [0,0,0,0,0,1,0,1]
 œp  ["fish ","n"," chips"] 
       fish n chips

3

ভিম, 10 7

DgJ@"|x

নিম্নলিখিত বিন্যাসে 1-ইনডেক্সড ইনপুট নেয়:

2
abcde
D      delete the number on the first line into register "
gJ     remove the newline while preserving whitespace on line 2
@"     run the " register as a macro - input is used as a count for...
|      the "go to nth column" command
x      delete the character at the cursor

@ ডিজেএমসিমেহেমকে 3 বাইটের জন্য ধন্যবাদ !


3

জাভা 8, 45 41 বাইট

s->n->new StringBuffer(s).deleteCharAt(n)

@ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ 4 টি বাইট সংরক্ষণ করুন

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


1
1. আপনার ;ল্যাম্বডায় ফাইনাল দরকার নেই (-1 বাইট)। ২. আমার দৃষ্টিতে আপনার আর ফিরে আসার দরকার নেই String। আমি মনে করি যে এটির StringBufferছাড়াই ফেরত দেওয়া +""পুরোপুরি বৈধ হবে (-3 বাইট) উদাহরণ? BigIntegerএকটি সীমাবদ্ধ একটি উপস্থাপনা intএই ক্ষেত্রে StringBuffer/ StringBuilderচপল এর উপস্থাপনা Stringগুলি।
অলিভিয়ার

@ অলিভিয়ারগ্রোওয়ের ধন্যবাদ :) সমস্ত উন্নতি স্বাগত হওয়ার আগে আমি আসলে জাভা ব্যবহার করি নি
TheLethalCoder





2

পিএইচপি, 41 বাইট, 35 বাইট বাদে? পিএইচপি

<?php $argv[1][$argv[2]]='';echo$argv[1];

0-ইন্ডেক্স

Tio


আমি আসলে এই কাজগুলি সত্যিই অবাক; হয় [$argv[2]]সূচক পরোক্ষভাবে একটি সীমার তৈরি? এছাড়াও, আইআইআরসি আপনি ছাড়তে পারেন <?php , কারণ পিএইচপি ইন্টারপ্রেটারের একটি মোড থাকে যা এর প্রয়োজন হয় না, এবং ভাষাটি কী তা ফাইলের মধ্যে আমরা সাধারণত এই ধরণের ইঙ্গিতের জন্য শাস্তি দিচ্ছি না।

@ ais523 মূলত হ্যাঁ। ডক্স থেকে: "স্ট্রিংয়ের মধ্যে অক্ষরগুলি স্ট্রিংয়ের পরে স্ট্রিংয়ের পরে শূন্য-ভিত্তিক অফসেটটি স্কয়ারের পরে বর্গাকার অ্যারে বন্ধনী ব্যবহার করে, [str [42] এর মতো নির্দিষ্ট করে অ্যাক্সেস এবং সংশোধন করা যেতে পারে। এর জন্য একটি স্ট্রিংকে অক্ষরের অ্যারে হিসাবে ভাবুন উদ্দেশ্য। " php.net/manual/en/language.types.string.php
আমাকে


2

আর, 48 47 বাইট

(জিউসেপেকে el()ধন্যবাদ জানাতে 1 বাইট সংরক্ষণ করা হয়েছে)

function(s,n)cat(el(strsplit(s,""))[-n],sep="")

স্ট্রিংটিকে তার স্বতন্ত্র অক্ষরগুলিতে বিভক্ত করুন, নবমটি সরান এবং তারপরে আবার যুক্ত করুন।

এর চেয়ে আরও ভাল সমাধান হতে পারে, স্টারস্প্লিট () যথেষ্ট অনস্বাস্থ্যের কারণ এটি একটি তালিকা ফিরে আসে।


টিআইওতে কাজ করবে না: pryr::f([function body])কয়েকটি বাইট el(strsplit(s,""))সংরক্ষণ করে এবং বাইট সংরক্ষণ করে তবে কোনও কারণে টিআইওতে কাজ করে না।
জিউসেপে

@ জিউসেপ ধন্যবাদ! আমি কিছুটা নোংরা মেশানো ব্যবহার করে অনুভব করব যেহেতু অবশ্যই এর আগে হওয়া উচিত install.packages("pryr")তবে সম্ভবত এটি আমার খুব মূল্যবান!
ব্যবহারকারী 2390246

function(s,n)intToUtf8(utf8ToInt(s)[-n])40 বাইট জন্য।
জে.ডো

@ জে.ডো ভাল জায়গা! এটি একটি খুব ভিন্ন পদ্ধতির তাই আপনার নিজের উত্তর হিসাবে এটি পোস্ট করা উচিত।
ব্যবহারকারী 2390246

আর একটি উপ-47 function(s,n)sub(sub(0,n,"(.{0})."),"\\1",s)44 এর জন্য
জে.ডো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.