বিপরীত-ইশ একটি স্ট্রিং!


11

আপনার টাস্ক: এমন একটি প্রোগ্রাম / ফাংশন লিখুন যখন কেবল মাত্র ASCII অক্ষর যুক্ত স্ট্রিং দেওয়া হলে আউটপুট / স্ট্রিংটি বিপরীত-ইসেশে প্রদান করে।

উদাহরণ:

1) ইনপুট

Hello, World!

2) ইনপুটটিতে অনন্য অক্ষরের সংখ্যা। ( |পাঠযোগ্যতার জন্য পাইপ ( ) দ্বারা পৃথক ইনপুট স্ট্রিং )

H|e|l|l|o|,| |W|o|r|l|d|!
1 2 3   4 5 6 7   8   9 10

3) সদৃশ চরিত্রগুলির জন্য, সেই অক্ষরের প্রথম উপস্থিতিটি সন্ধান করুন এবং প্রথমটির মতো একই সংখ্যার সাথে সদৃশ চরিত্রটি সংখ্যা করুন।

H|e|l|l|o|,| |W|o|r|l|d|!
1 2 3 3 4 5 6 7 4 8 3 9 10

4) স্ট্রিংটি বিপরীত করুন, তবে সংখ্যাগুলি নয়।

!|d|l|r|o|W| |,|o|l|l|e|H
1 2 3 3 4 5 6 7 4 8 3 9 10

5) পুনরাবৃত্তি সংখ্যা উপরে অক্ষর মুছুন। (মুছে ফেলা অক্ষরগুলি একটি নক্ষত্রের সাথে উপস্থাপিত হয়))

!|d|l|*|o|W| |,|*|l|*|e|H
1 2 3 3 4 5 6 7 4 8 3 9 10

)) মোছা অক্ষরগুলি মুছে ফেলা অক্ষরের সাথে সংখ্যার প্রথম উপস্থিতির উপরে উপস্থিত অক্ষরের সাথে প্রতিস্থাপন করুন।

!|d|l|l|o|W| |,|o|l|l|e|H
1 2 3 3 4 5 6 7 4 8 3 9 10

7) আউটপুট

!dlloW ,olleH

পরীক্ষার কেস:

Input -> Output
"Hello, World!" -> "!dlloW ,olleH"
"18464399" -> "99343488"
"Code Golf" -> "floG eloC"
"abcdefgABCDEFG" -> "GFEDCBAgfedcba"
"Mmm, marshmallows" -> "swwllwmhsrwm  mms"
"15147" -> "74751"

যারা মুছে ফেলা পোস্টগুলি দেখতে পারেন তাদের জন্য এখানে স্যান্ডবক্স ছিল ।
কমরেড স্পার্কলপনি

স্ট্রিংটিতে কি কেবল এএসসিআইআই অক্ষর রয়েছে কিনা তা গ্যারান্টিযুক্ত?
ফাঁস নুন

@ লিক্যনুন হ্যাঁ, আমি সম্পাদনা করব।
কমরেড স্পার্কলপনি

উত্তর:


19

পাইথ , 1 বাইট

X

সমস্ত পরীক্ষার কেস যাচাই করুন।

পাইথের দুর্দান্ত বিল্ট-ইন রয়েছে :-)


পাইথ ,  8  7 বাইট

sm@_QxQ

সমস্ত পরীক্ষার কেস যাচাই করুন।

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

এটি আরও আকর্ষণীয় অন্তর্নির্মিত পদ্ধতির approach

sm@_QxQ  - Full program.

 m       - Map over the input.
  @_Q    - Get the index in the reversed input.
     xQ  - Of the first index of each character in the String.
s        - Join the list.

4
পাইথের এটি বিল্ট ইন হিসাবে রয়েছে কেন? এই প্রশ্নটি বাদে কীভাবে এটি দরকারী?
জেরি যেরেমিয়া

@ জেরি জেরেমিয়া আপনি এখানে এই ফাংশন সম্পর্কে আরও পড়তে পারেন । এটি পাইথের অনুবাদ ফাংশন, তবে তৃতীয় যুক্তিটি অনুপস্থিত থাকলে পরিবর্তে দ্বিতীয় যুক্তির বিপরীতটি ব্যবহৃত হয়।
মিঃ এক্সকোডার 15



5

সিজেম , 7 বাইট

q__W%er

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

ব্যাখ্যা

q   e# Read all input.
__  e# Make two copies.
W%  e# Reverse the third copy.
er  e# Transliterate the input, mapping the input to its own reverse. Due
    e# to the way transliteration works in CJam, if a character in the source
    e# of the mapping is repeated, all but the first occurrence of that
    e# character are ignored.

আমি জেলি এর yমত কাজ করতে চান।
এরিক আউটগল্ফার

@EriktheOutgolfer আমি অ্যালিসের y মত কাজ করেন। : পি
মার্টিন এন্ডার



3

এলিস , 17 বাইট

/?.R?y.@
\i.!yDo/

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

ব্যাখ্যা

/...@
\.../

এটি অর্ডিনাল মোডে লিনিয়ার কোডের জন্য কেবলমাত্র সাধারণ টেম্পলেট। যদি আমরা এটিকে প্রকাশ করি, তবে আসল প্রোগ্রামটি সহজভাবে হয়ে যায়:

i.!?D.?.Ryyo

এখানে ধারণাটি আমার সিজেএম উত্তরের মতো । যেহেতু অ্যালিসের সাথে পূর্ণসংখ্যার সাথে স্ট্রিংগুলিতে সূচকের কোনও সহজ উপায় নেই, তাই লিখিতরূপের ( yএ্যালিসে) প্রতিলিপিটি ব্যবহার করা সহজ । যাইহোক, এলিসের ট্রান্সলিটেশন শব্দার্থবিদ্যা সিজেমের চেয়ে অনেক বেশি সাধারণ, যার অর্থ অ্যালিস কেবল পুনরাবৃত্তি ম্যাপিংগুলিকে উপেক্ষা করে না। উদাহরণস্বরূপ, আমরা যদি কেবল Mmm, marshmallowsএর বিপরীতে লিপ্যন্তরেণ করতে চাইতাম তবে এটি ম্যাপিংয়ের নিম্নলিখিত তালিকাটির প্রতিনিধিত্ব করবে:

M -> s
m -> w
m -> o
, -> l
  -> l
m -> a
a -> m
r -> h
s -> s
h -> r
m -> a
a -> m
l ->  
l -> ,
o -> m
w -> m
s -> M

মনে রাখবেন আমরা পেয়েছেন, উদাহরণস্বরূপ, m -> w, m -> o, m -> aএবং m -> a। সিজেএম কেবল প্রথম ম্যাপিং ব্যতীত সমস্ত কিছু ফেলে দেবে, তবে অ্যালিস পরিবর্তে এগুলি সাইকেল চালিয়ে যাবে। সুতরাং প্রথমটিতে mম্যাপ করা হবে w, দ্বিতীয়টিতে দ্বিতীয়টি হবে o, আবার পঞ্চমটি আরও wকিছু হবে। এই ক্ষেত্রে যে সহায়ক নয়, কারন সাধারণত এটি যদি আমরা সঞ্চালন সালে yউপর AAB(কিছু স্ট্রিং জন্য Aএবং B) হিসাবে আমরা CJam করেছিল, আমরা সবসময় শুধু পাবেন Bএলিস হবে।

সুতরাং আমরা কীভাবে ম্যাপিং গণনা করব যা কাজের জন্য কাজ করে y(যেমন আমরা কীভাবে বারবার ম্যাপিংগুলি ম্যানুয়ালি বাতিল করব)? অবশ্যই, অন্য একটি লিখিত লিপি লিখিতকরণ ব্যবহার করে। :)

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

সুতরাং কোড:

i   Read input.                   ["Mmm, marshmallows"]
.!  Store a copy on the tape.
?D  Push the nub of the input.    ["Mmm, marshmallows" "Mm, arshlow"]
.   Duplicate.                    ["Mmm, marshmallows" "Mm, arshlow" "Mm, arshlow"]
?   Retrieve input.               ["Mmm, marshmallows" "Mm, arshlow" "Mm, arshlow" "Mmm, marshmallows"]
.R  Push its reverse.             ["Mmm, marshmallows" "Mm, arshlow" "Mm, arshlow" "Mmm, marshmallows" "swollamhsram ,mmM"]
y   Transliterate.                ["Mmm, marshmallows" "Mm, arshlow" "swllmhsr mm"]]
y   Transliterate.                ["swwllwmhsrwm  mms"]
o   Output.                       []



3

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

জাস্টিন মেরিনারকে 3 বাইট সংরক্ষণ করা হয়েছে

s=>[...s].map(x=>s.slice(~s.indexOf(x))[0]).join``

এটা পরীক্ষা করো:

f=s=>s.split``.map(x=>s.slice(~s.indexOf(x))[0]).join``

let inp = document.getElementById("inp");
let out = document.getElementById("out");

function change() {
  out.innerText = f(inp.value);
}

change();
<input id="inp" type="text" oninput="change()" value="Hello, World!" /><br>
<p id="out"></p>


2

আর , 68 65 বাইট

function(s)chartr(paste(rev(el(strsplit(s,''))),collapse=''),s,s)

পরীক্ষার মামলাগুলি যাচাই করুন!

3 বাইট কমের জন্য এরিকের 05AB1E পদ্ধতি বন্দর করে । এটি প্রথম ছিল না, তবে এটিই আমি প্রথম দেখেছি।

পুরনো সংস্করণ:

function(s)paste(rev(s<-el(strsplit(s,'')))[match(s,s)],collapse='')

সমস্ত পরীক্ষার কেস যাচাই করুন - নাম হিসাবে ইনপুট সহ ভেক্টর এবং নীচের উদ্ধৃতিগুলিতে আউটপুট প্রিন্ট করুন।

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

অব্যক্ত ব্যাখ্যা:

function(s){
 s <- el(strsplit(s,''))      # string to characters
 r <- rev(s)                  # reverse s
 idx <- match(s,s)            # indices of first matches
 r <- r[idx]                  # do the replacement of duplicates
 paste(r, collapse = "")      # characters to string
}                             # implicit return of last evaluated statement

2

সি (জিসিসি) , 98 বাইট

i,n,a[256];char*f(char*c){n=strlen(c);for(i=n;i>0;i--)a[c[i-1]]=c[n-i];for(;i<n;i++)c[i]=a[c[i]];}

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

আর্গুমেন্টটি অবশ্যই পরিবর্তনযোগ্য স্ট্রিং হওয়া উচিত; স্ট্রিং-ইন-প্লেস পরিবর্তিত হয়।



1

রাদা , 27 বাইট

f x{x|[x[-1-indexOf(_,x)]]}

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

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

স্ট্রিং ডেটাটাইপ (40 বাইট) ব্যবহার করে:

f x{x=x/""x|[x[-1-indexOf(_,x)]]|concat}

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


0

পাইথন ,191 128 বাইট

w=input("")
c=[]
for x in range(0,len(word)):
  chars.append(word[x])
back = []
for x in chars:
  back.insert(0,x)
final = ""
for x in back:
  final = final + x
print(final)

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


4
হাই, এবং পিপিসিজিতে আপনাকে স্বাগতম! এটি দুর্দান্ত উত্তর, তবে এটি গল্ফ হয় না (এটির চেয়ে আরও বেশি বাইট রয়েছে)। দয়া করে কিছু বাইট অপসারণ করার চেষ্টা করুন (উদাহরণস্বরূপ পরিবর্তনশীল নামগুলি সংক্ষিপ্ত করে) এবং আপনার পোস্টটি সম্পাদনা করুন।
NoOneIsHere

0

জাভা 10, 100 99 97 বাইট

s->{var a=new char[256];int l=s.length,i=l;for(;i>0;a[s[--i]]=s[l+~i]);for(;i<l;s[i]=a[s[i++]]);}

@ LeakyNun এর সি উত্তর বন্দর । আমি সন্দেহ করি জাভাতে অনুরূপ কিছু না করে এটি আরও খাটো করা যায়।
-1 বাইট @ সিলিংক্যাট ধন্যবাদ ।

char[](অক্ষর-অ্যারে) হিসাবে ইনপুট করুন এবং বাইটগুলি সংরক্ষণ করতে কোনও নতুন ফেরতের পরিবর্তে এই ইনপুটটিকে সংশোধন করে।

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


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