একটি স্ট্রিং থেকে পুনরাবৃত্তি শব্দগুলি সরান


12

ইনপুট করা বাক্য থেকে সমস্ত পুনরাবৃত্তি শব্দগুলি সরান।

ইনপুট এমন কিছু হবে cat dog cat dog bird dog Snake snake Snakeএবং আউটপুট হওয়া উচিত cat dog bird Snake snake। শব্দের আলাদা করার জন্য সর্বদা একক স্থান থাকবে।

আউটপুট ক্রম অবশ্যই ইনপুট হিসাবে একই হতে হবে। (উদাহরণ দেখুন)

আপনাকে বিরামচিহ্ন হ্যান্ডেল করার দরকার নেই তবে মূল অক্ষর হ্যান্ডলিং প্রয়োজন।


13
আমি কমপক্ষে কয়েক দিনের জন্য একটি উত্তর গ্রহণ করার জন্য অপেক্ষা করার পরামর্শ দিচ্ছি। একটি সংক্ষিপ্ত সমাধান এখনও আসতে পারে।
অ্যালেক্স এ।

1
আমি ইউনিকচারদের অনুরূপ সমাধান আশা করি , এটি ব্যতীত অন্তর্নির্মিত নিষিদ্ধ করে না যা সদৃশগুলি সরিয়ে দেয়।
xnor

2
উদাহরণটি দেখে, এখানে বিশেষ মূলধন হ্যান্ডলিং নেই: Snakeএবং snakeকেবল আলাদা হিসাবে বিবেচনা করা হয়
edc65

@ অ্যালেক্সা: আসলে, ইতিমধ্যে একটি আছে। কোডগলফ.স্ট্যাকেক্সেঞ্জঞ্জ
প্রশ্নগুলি /

উত্তর:


1

জিএস 2, 3 বাইট

,É-

সিপি 437 এ এনকোড হয়েছে ।

প্রোগ্রামটির শুরুতে STDIN চাপ দেওয়া হয়। ,এটি স্পেসে বিভক্ত হয়। Éহয় uniqযা সদৃশ ফিল্টার। -ফাঁক দিয়ে যোগ দেয়।


10

সিজেম, 7 টি চর

qS/_&S*

সম্ভবত অনেক খাটো হতে পারে ... তবে যা কিছুই আমি প্রায় কখনও সিজেএম ব্যবহার করি নি। ^। ^

qইনপুট পড়ে, S/স্পেসে বিভাজন, _&নকল এবং সেটওয়্যার প্রয়োগ করে এবং (সুতরাং ডুপ্লিকেট থেকে মুক্তি পাওয়া), এবং S*স্পেসে পুনরায় যোগদান করে।

অনলাইন দোভাষী সংযোগ


1
আপনি কীভাবে 7 এর চেয়ে অনেক খাটো পেতে পারেন? lol
ক্রંચার

কেউ একজন ঠিক করেছে।
এলিয়েন জি

8

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

import Data.List
unwords.nub.words

ব্যবহারের উদাহরণ: (unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"-> "cat dog bird Snake snake"


8

এপিএল, 22 20 বাইট

{1↓∊∪(∊∘' '⊂⊢)' ',⍵}

এটি একটি নামবিহীন monadic ফাংশন তৈরি করে যা ডানদিকে একটি স্ট্রিং গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে।

ব্যাখ্যা:

               ' ',⍵}    ⍝ Prepend a space to the input string
     (∊∘' '⊂⊢)          ⍝ Split the string on spaces using a fork
    ∪                    ⍝ Select the unique elements
{1↓∊                     ⍝ Join into a string and drop the leading space

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

ডেনিসের জন্য 2 টি বাইট সংরক্ষণ করা!


3
আমি কোনও উত্তর পছন্দ করি যা একটি অ-গৌরবহীন, নন-গল্ফ ভাষা ব্যবহার করে।
ডার্ট এগ্রিগিয়াস


7

জাভাস্ক্রিপ্ট (ES6) 33

( এই উত্তর দেখুন )

নীচের স্নিপেটটি একটি ইকামাস্ক্রিপ্ট comp অনুবর্তী ব্রাউজারে চালিত করে পরীক্ষা করুন (সেট, স্প্রেড অপারেটর, টেম্পলেট স্ট্রিং এবং তীর ফাংশন প্রয়োগ করে - আমি ফায়ারফক্স ব্যবহার করি)।

দ্রষ্টব্য: সেটগুলিতে রূপান্তরটি সমস্ত নকলকে সেট করে এবং সেটটি মূল ক্রমকে মেন্টেন্ট করে।

f=s=>[...Set(s.split` `)].join` `

function test() { O.innerHTML=f(I.value) }

test()
#I { width: 70% }
<input id=I value="cat dog cat dog bird dog Snake snake Snake"/><button onclick="test()">-></button>
<pre id=O></pre>


বাহ বাহ বাহ ... আমি যে ধরণের সমাধান আমার মনে হয় 25% বা তারও বেশি কাটানোর আপনার ক্ষমতা থেকে আমি অবাক হয়েছি। +1
ETH প্রোডাকশনগুলি

1
সমস্যাটি দেখে তাত্ক্ষণিকভাবে সেটের কথা চিন্তা করে ... কেবল বুঝতে পেরে আপনি ইতিমধ্যে এটি সম্পন্ন করেছেন = পি খুব সুন্দর!
Mwr247

কীভাবে আসল ক্রম বজায় রাখা যায়?
njzk2

@ njzk2 ভাষা বিকাশকারীদের জিজ্ঞাসা করুন। এটি হতে পারে: একটি সেট অভ্যন্তরীণভাবে একটি অ্যারে হয় এবং প্রতিটি সন্নিবেশে সদৃশগুলি প্রত্যাখ্যান করার জন্য একটি চেক থাকে। এটি যাইহোক যাইহোক বাস্তবায়নের বিশদ
edc65

@ njzk2 আমি কীভাবে জানি না , আমি জানি যে এই সত্যটি ভাষা দ্বারা নির্দিষ্ট করা হয়েছে: সেট অবজেক্টগুলি মানগুলির সংগ্রহ, আপনি এর উপাদানগুলিকে সন্নিবেশ ক্রমে পুনরাবৃত্তি করতে পারেন । সেটে একটি মান কেবল একবারে উপস্থিত হতে পারে; এটি সেট এর সংগ্রহে অনন্য। ( বিকাশকারী.মোজিলা.অর্গ
আইট

6

টিস্ক্রিপ্ট , 12 বাইট

চা স্ক্রিপ্টটি গল্ফ করার জন্য জাভাস্ক্রিপ্ট।

xs` `u()j` `

এটি বেশ সংক্ষিপ্ত। এটি প্রতিটি জায়গাতে বিভক্ত হয়, নকলগুলি ফিল্টার করে, আবার যোগদান করে।

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


এটা tee-a scriptনাকি tee script?

@ ম্যাথিয়াসফসটার এটি "টি-স্ক্রিপ্ট" হবে
ডাউনগোট

টিস্ক্রিপ্টে কি ভেরিয়েবল নামের জন্য চিঠি সংরক্ষণ করা আছে? তাদের বেশিরভাগ বিল্ট-ইন সম্পত্তিগুলির শর্টহ্যান্ড হিসাবে উপস্থিত হবে।
ইন্ট্রিপিডকোডার

@intrepidcoder হ্যাঁ এই সমস্ত: cdfghijklmnopstuvwভেরিয়েবলের জন্য সংরক্ষিত, এগুলি সবগুলি 0 থেকে প্রাক-প্রাথমিক করা আছে bএটি একটি চলক নামের জন্যও সংরক্ষিত আছে, এটি একটি খালি স্ট্রিং-এ প্রাক-সূচনা হয়
ডাউনগোট

6

পাওয়ারশেল, 15 বাইট

$args|select -u

ওহ, পাওয়ারশেল কিছুটা প্রতিযোগিতামূলক যেখানে এমন একটি আসল প্রবেশ? এটা অপ্রতিরোধ্য!

স্ট্রিংটিকে ইনপুট আর্গুমেন্ট, পতাকা Select-Objectসহ পাইপ হিসাবে গ্রহণ করে -Unique। অনুরোধ অনুসারে অর্ডার এবং মূলধন সংরক্ষণ করে একটি স্ট্রিংয়ের অ্যারে স্পিট করে।

ব্যবহার:

PS C:\Tools\Scripts\golfing> .\remove-repeated-words-from-string.ps1 cat dog cat dog bird dog Snake snake Snake
cat
dog
bird
Snake
snake

যদি ইনপুটটি কমান্ড-লাইন আর্গুমেন্ট হিসাবে হতে পারে তা ধরে নিতে যদি এটি খুব "ছলচাতুরী" হয় তবে নিম্নলিখিতগুলির জন্য 24 21 বাইটে যান ( ব্লেবকে ধন্যবাদ কিছু বাইট সংরক্ষণ করে ) । মজার বিষয় হল, এই দিকটিতে অ্যানারি অপারেটরটি ব্যবহার করা যদি কাজ করে তবে ইনপুট স্ট্রিংটি উদ্ধৃতি বা স্বতন্ত্র আর্গুমেন্ট হিসাবে চিহ্নিত করা হয়, কারণ ডিফল্টটি -splitফাঁক দিয়ে থাকে। বোনাস.

-split$args|select -u

সহজেই বিভক্ত ইনপুট দিয়ে কোডটি চামচ খাওয়ানোর পরিবেশের আচরণের উপর নির্ভর করে…?
manatwork

@ মানাতকর্ম আমি একটি স্পেসিফিকেশন যোগ করেছি যদি প্রথম ব্যবহারটি খুব "ধোঁকা" হিসাবে বিবেচনা করা হয় - যেহেতু ইনপুটটি কীভাবে নির্দিষ্ট করা হয়েছে ঠিক এটি স্পষ্ট নয়, আমরা এটি ওপিতে ছেড়ে দেব।
অ্যাডমবর্কবার্ক

এবং এখন কীভাবে পাওয়ারশেলের নিজস্ব বৈশিষ্ট্যগুলি কার্যকর তা স্পষ্ট। 24 এটি সত্যই একটি উত্সাহের দাবিদার।
manatwork

@ মাইমিডি আপনি কি তিনটি বাইট অপ্রত্যাশিত কেটে ফেলতে পারেন ?? কমান্ডলাইন আরগসগুলিতে অ্যানারি স্প্লিট এবং "" 'র প্রয়োজন নেই বলে সংস্করণ: s> ls -l split.ps1 & split.ps1 টাইপ করুন & পাওয়ারসেল -nologo -f split.ps1 বিড়াল কুকুর বিড়াল কুকুর পাখির কুকুর সাপ সাপ সাপ - rw-rw-rw- 1 অ্যাডমিন 0 21 2015-11-02 19:06 split.ps1 -split $ args | সিলেক্ট-বিড়াল কুকুর পাখি সাপ সাপ
এলোমেলো

4

জুলিয়া, 29 বাইট

s->join(unique(split(s))," ")

এটি একটি নামবিহীন ফাংশন তৈরি করে যা স্পেসগুলিতে স্ট্রিংটিকে একটি ভেক্টরে বিভক্ত করে, কেবল অনন্য উপাদান রাখে (অর্ডার সংরক্ষণ করে), এবং অ্যারেটিকে ফাঁক দিয়ে একটি স্ট্রিংয়ে ফিরিয়ে দেয়।


4

আর, 22 বাইট

cat(unique(scan(,"")))

এটি এসটিডিআইএন থেকে একটি স্ট্রিং পড়ে এবং এটি ব্যবহার করে স্পেসে ভেক্টরে বিভক্ত scan(,"")করে কেবল অনন্য উপাদানগুলি নির্বাচন করে, তারপরে স্ট্রিংয়ের সাথে সংমিশ্রণ করে এবং এটি স্টাডুটে ব্যবহার করে প্রিন্ট করে cat


4

রেটিনা , 22 বাইট

 (\w+)\b(?<=\b\1\b.+)

পেছনের লাইফিডের সাহায্যে ফাইলটি সংরক্ষণ করুন এবং -sপতাকাটি দিয়ে চালান run

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


4

গণিত, 43 39 বাইট

StringRiffle@*Keys@*Counts@*StringSplit

ব্যবহারের জন্য StringRiffle[]
মাইকেল স্টারন

এর Keys@Countsপরিবর্তেDeleteDuplicates
ব্র্যানিশালভ

@ ব্রানিস্লাভ Keys@Countsঅর্ডার সংরক্ষণ করে?
লিজিয়নম্যামাল 978

@ LegionMammal978 Counts[list]এমন একটি সমিতি দেয় যার কীগুলি তালিকার উপাদানগুলির হিসাবে প্রথমে প্রদর্শিত হয় একই ক্রমে থাকে।
ব্র্যানিসালভ

3

পাইথ - 9 বাইট

ঠিক এই কারণেই আমরা সবাই পাইথ 5 এর জন্য অপেক্ষা করছিলাম, 5 বাইট হতে পারতাম।

jdoxzN{cz

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


পাইথ 5 বৈধ নয় কেন? এটি প্রয়োগ করা হবে বলে মনে হয় ।
lirtosiast

@ থমাসকওয়া আমার মনে হয় না এটি শেষ হয়েছে। এখনও কোনও সংস্করণ প্রকাশ হয়নি।
অ্যালেক্স এ।

3

সি ++ 11, 291 বাইট

#include<iostream>
#include<string>
#include<list>
#include<sstream>
#include<algorithm>
using namespace std;main(){string s;getline(cin,s);list<string>m;stringstream b(s);while(getline(b,s,' '))if(find(m.begin(),m.end(),s)==m.end())m.push_back(s);for(auto a:m)cout<<a<<' ';cout<<endl;}

গল্ফিং ভাষার তুলনায় পুরো সি ++ উত্তরগুলি দেখতে পাচ্ছি না, তবে কেন নয়। মনে রাখবেন যে এটি সি ++ 11 বৈশিষ্ট্য ব্যবহার করে এবং তাই আপনার সংকলক যদি যথেষ্ট বয়স্ক অন্ধকার যুগে আটকে থাকে তবে আপনাকে সি ++ 11 স্ট্যান্ডার্ডটি ব্যবহার করতে একটি বিশেষ সংকলন সুইচ পাস করতে হতে পারে। জন্য g++, এটা -std=c++11(শুধুমাত্র সংস্করণ <5.2 জন্য প্রয়োজন)। এটি অনলাইনে চেষ্টা করুন


আপনি যদি অন্যান্য ভাষার সাথে বাইটের সংখ্যা তুলনা করেন তবে দেখবেন কেউ কেন সি ++ ব্যবহার করছে না।
ক্রোকো

3
@ ক্রোকো যদি আপনি বুঝতে পারেন যে এই সাইটের বিন্দুটি প্রতিটি ভাষায় সংক্ষিপ্ত সমাধান সন্ধান করা হয় তবে আপনি কেন এই উত্তর পোস্ট করলেন তা আপনি দেখতে পাবেন।
মেগো

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

1
কেন ব্যবহার করবেন না set? এটি নকশার দ্বারা কোনও সদৃশ অনুমতি দেয় না। শুধু এটি pushোকান।
edmz

1
@ ব্ল্যাক এ- setএর আইটেমগুলি একই ক্রমে যুক্ত করার গ্যারান্টি নেই।
মেগো

3

কে 5, 9 বাইট

" "/?" "\

এফওয়াইআই, এটি একটি ফাংশন।

ব্যাখ্যা

     " "\    Split the input on spaces
    ?        Find all the unique elements
" "/         Join them back together

2

মতলব: 18 বাইট

unique(d,'stable')

যেখানে dহয় d = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}

ফলাফল হলো 'cat' 'dog' 'bird' 'Snake' 'snake'


4
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! এখানে জমা দেওয়ার জন্য হয় পুরো প্রোগ্রামগুলি হওয়া দরকার যা STDIN থেকে পড়ে এবং STDOUT এ লিখতে পারে, বা ফাংশন যা ইনপুট এবং রিটার্ন আউটপুট গ্রহণ করে। এটি যেমন দাঁড়িয়ে আছে, এটি কেবল একটি স্নিপেট; এটি ধরে নিয়েছে যে ভেরিয়েবল dইতিমধ্যে নির্ধারিত হয়েছে। আপনি একটি ফাংশন হ্যান্ডেল ব্যবহার করে এটি সংশোধন করতে পারেন: @(d)unique(d,'stable')4 বাইটের ব্যয়ে।
অ্যালেক্স এ।

2

পাইথন 3, 55

l=[]
for x in input().split():l+=[x][x in l:]
print(*l)

হ্যাঁ, এই দীর্ঘ। দুর্ভাগ্যক্রমে, পাইথন setউপাদানগুলির ক্রম রাখে না, তাই আমাদের নিজেরাই কাজটি করতে হবে। আমরা ইনপুট শব্দ মাধ্যমে পুনরুক্তি, একটি তালিকা পালন lউপাদান আছে যা এখনো নয়, সেগুলো l। তারপরে, আমরা lস্থান-বিচ্ছিন্ন বিষয়বস্তু মুদ্রণ করি ।

lযদি কিছু শব্দ অন্য শব্দের সাবস্ট্রিং হয় তবে একটি স্ট্রিং সংস্করণ কাজ করবে না।


2

সি #, 38 বাইট

String.Join(" ",s.Split().Distinct());

2
আমি নিশ্চিত নই যে আপনি ধরে নিতে পারেন ইনপুটটি ইতিমধ্যে পপুলেটে গেছে s, আমার মনে হয় আপনার এটি যুক্তি হিসাবে পাওয়া উচিত।
জ্যাকব 13

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

2

পার্ল 6, 14 বাইট

পুরো প্রোগ্রাম হিসাবে আপনি কেবল এটি লিখবেন 21 বাইট দীর্ঘ

say $*IN.words.unique # 21 bytes

ল্যাম্বডা এক্সপ্রেশন হিসাবে সংক্ষিপ্ততম 14 বাইট

*.words.unique # 14 bytes
say ( *.words.unique ).('cat dog cat dog bird dog Snake snake Snake')

my &foo = *.words.unique;
say foo $*IN;

আউটপুট একটি তালিকা থাকা অবস্থায়, আপনি যদি স্ট্রিংফাইং প্রসঙ্গে রাখেন তবে এটি উপাদানগুলির মধ্যে একটি স্থান স্থাপন করবে। যদি কোনও স্ট্রিং ফেরত দেওয়ার প্রয়োজন হয় তবে ~আপনি সামনের অংশে একটি যুক্ত করতে পারেন ~*.words.unique


যদি স্নিপেটগুলিকে অনুমতি দেওয়া হয় তবে আপনি এটিকে 13 টি সরিয়ে ছোট করে তুলতে পারেন *

$_ = 'cat dog cat dog bird dog Snake snake Snake';

say .words.unique


1

লুয়া, 94 বাইট

function c(a)l={}return a:gsub("%S+",function(b)if l[b]then return""else l[b]=true end end)end

নাম প্রকাশে অনিচ্ছুক একজন ব্যবহারকারী প্রতিস্থাপন করতে সুপারিশ ... return""else l[b]=true end end...সঙ্গে ...return""end l[b]=""end...
জোনাথন ফ্রেচ


1

জাভাস্ক্রিপ্ট, 106 102 100 বাইট

function(s){o={};s.split(' ').map(function(w){o[w]=1});a=[];for(w in o)a.push(w);return a.join(' ')}

// জেএসের পক্ষে বেশ দীর্ঘ পথ :(


জেএস (ওরফে ECMAScript) 6 টি তীর ফাংশন ব্যবহার করার চেষ্টা করুন , যা 6 বাইট সংরক্ষণ করতে হবে। এছাড়াও, আমি ইতিমধ্যে কফিস্ক্রিপ্ট এ পোর্টিং কমপক্ষে 30 বাইট সাশ্রয় করতে পারেন দেখতে পারেন।
kirbyfan64sos

এই উত্তরটি নেটিভ জাভাস্ক্রিপ্ট (ECMA5) এ রয়েছে, এসকি 6 এর জন্য এডক 65 রয়েছে।
জ্যাকব


1

পিএইচপি 64 59 বাইট

function r($i){echo join(" ",array_unique(split(" ",$i)));}

explode()split(), implode()join()?
manatwork

ধন্যবাদ! ভাল পরামর্শ। দেখে মনে splitহচ্ছে এটি চিত্রিত করা হচ্ছে, তবে অনুমান করুন যে কোডগলভিংয়ের জন্য কোনও বিষয় নয়।
জেরোইন

1

অ্যাপলস্ক্রিপ্ট, 162 বাইট

মজার বিষয় হল, এটি পুনরাবৃত্তি না করা অক্ষরের জিনিসটির সাথে প্রায় একই।

এক্স সেট করুন (প্রদর্শন ডায়ালগ "" "ডিফল্ট উত্তর" ") এর পাঠ্যটির শব্দ ফিরে এসেছে
"" এ সেট করুন
আমি এক্স এর সাথে পুনরাবৃত্তি
মামলা বিবেচনা
যদি আমি না হয় তবে ওগুলিতে ও & আমি সেট করুন ""
শেষ
শেষ
ণ

আমি আসলে এর আগে বিবেচ্য কীওয়ার্ডটি জানতাম না। তুমি আরও জানবে...


1

বার্লেস্ক, 6 বাইট

blsq ) "cat dog cat dog bird dog Snake snake Snake"wdNBwD
cat dog bird Snake snake

বরং সরল: বিভক্ত শব্দ, নুব (নুব = ডুপ্লিকেট অপসারণ), আবার শব্দগুলিতে রূপান্তর করুন।


1

গেম, 21 অক্ষর

*\S=${$0;$0}@set{$0;}

( অনন্য চরিত্রের সমাধানের সাথে খুব মিল , যেমন গেমায় কোনও অ্যারে নেই, তাই অন্তর্নির্মিত অনন্য ফাংশনগুলিকে অনুমতি দেওয়া আমাদের বেশি সহায়তা করে না))

নমুনা রান:

bash-4.3$ gema '*\S=${$0;$0}@set{$0;}' <<< 'cat dog cat dog bird dog Snake snake Snake'
cat dog bird Snake snake 

1

স্কালা, 44 47 বাইট

(s:String)=>s.split(" ").distinct.mkString(" ")

সম্পাদনা করুন : toSetসম্ভবত অর্ডার সংরক্ষণ করা সম্ভব নয়, তাই আমি এখন স্বতন্ত্র // ব্যবহার করছি যা আমার জন্য 3 বাইট খরচ :(


0

পিএইচপি, 37 বাইট

ধরে $sনেওয়া ইনপুট স্ট্রিং।

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