একটি স্ট্রিং প্রতিলিপি


39

ডুপ্লিকেটগুলি থেকে মুক্তি পাওয়ার জন্য অনেকগুলি ভাষার অন্তর্নির্মিত উপায় রয়েছে, বা "ডুপ্লিকেট" বা একটি তালিকা বা স্ট্রিংটিকে "অনুলিপি" দেওয়া আছে। একটি কম সাধারণ কাজ একটি স্ট্রিং "প্রতিলিপি"। এটি হ'ল প্রতিটি চরিত্রের জন্য, প্রথম দুটি ঘটনা রাখা হয়।

এখানে মুছে ফেলা উচিত এমন অক্ষরগুলির সাথে লেবেলযুক্ত এমন একটি উদাহরণ এখানে রয়েছে ^:

aaabcbccdbabdcd
  ^    ^ ^^^ ^^
aabcbcdd

আপনার কাজটি হ'ল এই ক্রিয়াকলাপটি বাস্তবায়ন করা।

বিধি

ইনপুটটি একটি একক, সম্ভবত খালি, স্ট্রিং। আপনি ধরে নিতে পারেন এটিতে কেবল ASCII রেঞ্জের ছোট হাতের অক্ষর রয়েছে।

আউটপুটটি সমস্ত অক্ষর মুছে ফেলা সমেত একটি একক স্ট্রিং হওয়া উচিত যা ইতিমধ্যে স্ট্রিংয়ে কমপক্ষে দুবার উপস্থিত হয়েছে (যাতে বাম-সর্বাধিক দুটি উপস্থিতি রাখা হয়)।

স্ট্রিংগুলির পরিবর্তে আপনি অক্ষরের তালিকাগুলি (বা সিঙ্গলটন স্ট্রিং) সহ কাজ করতে পারেন তবে ফর্ম্যাটটি ইনপুট এবং আউটপুটটির মধ্যে সামঞ্জস্য হতে হবে।

আপনি কোনও প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন এবং ইনপুট গ্রহণ এবং আউটপুট সরবরাহের আমাদের মানক পদ্ধতির কোনওটি ব্যবহার করতে পারেন ।

আপনি যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন তবে নোট করুন যে এই ফাঁকগুলি ডিফল্টরূপে নিষিদ্ধ করা হয়েছে।

এটি , তাই সংক্ষিপ্ততম বৈধ উত্তর - বাইটগুলিতে মাপা - জয়।

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

প্রতিটি জোড় লাইনের একটি পরীক্ষার কেস, আউটপুট পরে ইনপুট।



xxxxx
xx
abcabc
abcabc
abcdabcaba
abcdabc
abacbadcba
abacbdc
aaabcbccdbabdcd
aabcbcdd

লিডারবোর্ড

এই পোস্টের নীচে স্ট্যাক স্নিপেট উত্তরগুলি থেকে একটি লিডারবোর্ড তৈরি করে) ক) ভাষা প্রতি সংক্ষিপ্ত সমাধানের তালিকা হিসাবে এবং খ) সামগ্রিক লিডারবোর্ড হিসাবে।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

## Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

## Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

## Perl, 43 + 3 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও তৈরি করতে পারেন যা স্নিপেটে প্রদর্শিত হবে:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


5
একক স্ট্রিং ... স্ট্রিংলেটন?
dkudriavtsev

উত্তর:



15

জাভাস্ক্রিপ্ট (ES6), 42 48

একটি তীব্র 6 বাইট সম্পাদনা করুন thx @ নীল সংরক্ষণ করা

s=>s.replace(k=/./g,c=>(k[c]+=c)[11]?'':c)

ব্যাখ্যা: আমি kপ্রতিটি চরিত্রের জন্য তথ্য সংরক্ষণ করতে অবজেক্টের 'a' ... 'z' বৈশিষ্ট্যগুলি ব্যবহার করি (অবজেক্ট কে এই ক্ষেত্রে কেবল বাইটগুলি সংরক্ষণ করার জন্য একটি রিজেক্সট)। এই বৈশিষ্ট্যগুলি প্রাথমিকভাবে undefined। জাভাস্ক্রিপ্টে একটি সংখ্যক যোগ করে undefinedদেয় NaN(যথেষ্ট বুদ্ধিমান), তবে যুক্ত করে একটি স্ট্রিং 'এক্স' দেয় "undefinedX"- দৈর্ঘ্যের স্ট্রিং 10 (নির্বোধ)। আরও অক্ষর যুক্ত করা আপনি দীর্ঘ স্ট্রিং পেতে। প্রদত্ত অক্ষরের জন্য প্রাপ্ত স্ট্রিং যদি 11-এর বেশি হয় তবে সেই অক্ষরটিকে আউটপুট অনুলিপি করা হয় না।

পরীক্ষা

F=
s=>s.replace(k=/./g,c=>(k[c]+=c)[11]?'':c)

test=`

xxxxx
xx
abcabc
abcabc
abcdabcaba
abcdabc
abacbadcba
abacbdc
aaabcbccdbabdcd
aabcbcdd`.split`\n`
for(i=0;i<test.length;)
  a=test[i++],b=test[i++],r=F(a),
  console.log(r==b?'OK':'KO',a,'->',r,b)


কঠোরভাবে একটি খালি লাইন বলতে পরীক্ষার ক্ষেত্রে অন্যতম।
নীল

@ নীল ঠিক আছে খালি স্ট্রিং পরীক্ষা যুক্ত করেছেন
এডক 65

আপনি যদি অ্যারে ইনপুট এবং আউটপুটটিতে স্যুইচ করেন, আপনি আরও 12 টি অক্ষর সংরক্ষণ করতে। ফিল্টার ব্যবহার করতে পারেন। v=>v.filter(x=>!(v[x]+=x)[11])। "অপরিজ্ঞাত" হ্যাকের উপর কুডোস।
Grax32

@ গ্র্যাক্স থানেক্স তবে খুব আলাদা। এটি নিজের পোস্ট করা উচিত
edc65

14

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

lambda s:reduce(lambda r,c:r+c*(r.count(c)<2),s)

c[r.count(c)/2:]করার জন্য একটি একই দৈর্ঘ্যের বিকল্প নেই c*(r.count(c)<2)


49 বাইট:

r=''
for c in input():r+=c*(r.count(c)<2)
print r

12

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

(.)(?<=\1.*\1.+)

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

সরল রেজেক্স প্রতিস্থাপন - একটি চরিত্রের সাথে ইতিমধ্যে দু'বার উপস্থিত থাকলে এটি মেলে এবং এটি সরিয়ে ফেলুন।


আমি দু'টি 18 বাইটের সাথে একটি লুপ এবং একটি পুনরাবৃত্তি {2}গোষ্ঠীও চেষ্টা করেছিলাম ।
কোবি

1
আমি সম্প্রতি যুক্ত হওয়া বৈশিষ্ট্যটি ব্যবহার করে 14 পেয়েছি। ;)
মার্টিন এন্ডার

আমি জানতাম কিছু আছে। আমি সীমাবদ্ধতার দিকে চেয়েছিলাম, সম্ভবত এটি এক নয়। আমি আবার চেক করব।
কোবি

3
আহ, আমি মনে করি আমি মার্টিনের উত্তর পেয়েছি। আমি আগে চেষ্টা করার সময় আমার কিছুটা সমস্যা হয়েছিল, আমি মনে করি কারণ আমি কীভাবে একাধিক-লাইন ইনপুটটিতে ডুপুলিকেটটি কাজ করবে তা বিবেচনা করি নি। স্পোলার (প্রতি লাইন মোড সক্ষম করতে 5 বাইট যুক্ত): retina.tryitonline.net/…
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান - খুব ভাল, আমি এটি খুঁজে পাই নি। একটি উত্তর যুক্ত করতে নির্দ্বিধায় - আমি মনে করি এটি আমার উত্তর থেকে খুব আলাদা এবং আমি এটি সম্পাদনা করতে স্বাচ্ছন্দ্য বোধ করি না :P। ধন্যবাদ!
কোবি

6

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

.v|s.g:.z:1a
:2fl<3
he~t?

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

ব্যাখ্যা

এটি কাজ করে কারণ s - Subsetপ্রথমে বড় সাবসেটগুলির সাথে একত্রিত হবে, সুতরাং উদাহরণস্বরূপ "aaa"এটির "aa"আগে চেষ্টা করবে "a"

  • প্রধান শিকারী:

      .v         input = Output = ""
    |          Or
      s.         Output is an ordered subset of the input
      g:.z       Zip each character of the output with the output itself
      :1a        Apply predicate 1 on each element of the zip
    
  • ভবিষ্যদ্বাণী 1: সমস্ত অক্ষর সর্বাধিক দু'বার প্রদর্শিত হবে তা পরীক্ষা করুন। ইনপুট =[String:Char]

    :2f        Find all valid outputs of predicate 2 (i.e. one output per occurence
                   of the char)
    l<3        There are less than 3 occurences
    
  • ভবিষ্যদ্বাণী 2: একটি চরিত্রের উপস্থিতি পান। ইনপুট =[String:Char]

    he         Take a character of the string in the input
      ~t?      That character is the char of the input
    

6

> <> , 22 বাইট

i:0(?;::9g:}2(?o{1+$9p

এটি অনলাইন চেষ্টা করুন! এখন পর্যন্ত গণনাগুলির ট্র্যাক রাখতে কোডবক্স ব্যবহার করে।

i                       Read a char c of input
 :0(?;                  Halt if EOF
      :                 Make a copy - stack has [c c] at the top
       :9g              Get count stored at (c, 9)
          :}            Copy the count and move to bottom of stack
            2(?o        If the count is less than 2, output c
                {1+     Move the count back to the top of the stack and increment
                   $9p  Update cell at (c, 9)
                        [Instruction pointer moves to start as ><> is toroidal]

6

জে, 20 15 বাইট

#~(3>[+/@:={:)\

এটি একটি মোনাডিক ফাংশন সংজ্ঞায়িত করে যা একটি স্ট্রিং নেয় এবং ফেরত দেয়। এখানে চেষ্টা করুন । ব্যবহার:

   f =: #~(3>[+/@:={:)\
   f 'abaacbb'
abacb

ব্যাখ্যা

আমি আরও কিছু সমাধান ব্যবহার করে একই অ্যালগরিদমটিতে স্যুইচ করেছি, যেহেতু এটি সংক্ষিপ্ত হয়ে গেছে ...

#~(3>[+/@:={:)\  Input is y.
  (          )\  For each prefix of y:
          =        compute the equality vector
     [     {:      of the prefix and its last element, and
      +/@:         take its sum. Now we have a vector r such that y[i] has its
                   r[i]'th occurrence at position i.
   3>              Mark those coordinates where r[i] < 3.
#~               Remove the non-marked characters from y.

6

হাস্কেল, 40 39 বাইট

foldl(\s c->s++[c|filter(==c)s<=[c]])""

ব্যবহারের উদাহরণ: foldl(\s c->s++[c|filter(==c)s<=[c]])"" "aaabcbccdbabdcd"-> "aabcbcdd"

পরবর্তী চরটি cযদি cএখনও অবধি সকলের স্ট্রিং শব্দকোষগত কম হয় বা একক স্ট্রিংয়ের সমান হয় [c]

সম্পাদনা: @ এক্সনর তালিকা বোধগম্যতা থেকে স্যুইচ করে একটি বাইট সংরক্ষণ করেছেন filter। ধন্যবাদ!


আপনার বিকল্পটি filter(==c)s<=[c]বাইট সংরক্ষণ করতে পারে।
xnor


5

সি, 57 বাইট

f()স্ট্রিং সহ ডিপ্রিপিক্লিকেটে কল করুন । ফাংশনটি এর পরামিতিটি পরিবর্তন করে। forলুপ ঘোষণার কারণে C99 এর প্রয়োজন ।

f(char*p){for(char*s=p,m[256]={0};*s=*p;s+=++m[*p++]<3);}

আপনি কি sপ্রথম বিবৃতিতে ঘোষণাটি রাখতে পারবেন না for?
মার্টিন ইন্ডার

C99 এ আপনি পারেন। আমি কেবল কারণ গল্ফ সি 89 সামঞ্জস্য রাখতে পছন্দ করিনি didn't
owacoder

5

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

s=>s.filter(c=>(s[c]=(s[c]|0)+1)<3)

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


খুশী হলাম। আপনি c=>(s[c]=-~s[c])<3কয়েকটি বাইট সংরক্ষণ করতে পারেন ।
ইটিএইচ প্রডাকশনগুলি

আমি মিস করেছি যে আপনি ইনপুট হিসাবে অ্যারে ব্যবহার করতে পারেন এবং ব্যবহার করে কোনও ফাংশন লিখেছিলেন map। গল্ফ লাগলে এটি আপনার মতো মূলত দেখতে পেল। মূল পার্থক্যটি ছিল অ্যাসাইনমেন্ট, যা আপনি যদি এটির চারপাশে স্যুইচ করেন তবে কয়েকটি বাইট সংরক্ষণ করবে save s.filter(c=>(s[c]=s[c]+1|0)<3)33 বাইটের জন্য চেষ্টা করুন । সম্পাদনা: উফফফ, আমার উপরের মন্তব্যটি মিস করেছেন, এটি আরও ভাল :)
জানুয়ারী

4

পাওয়ারশেল ভি 2+, 31 বাইট

$args-replace'(.)(?<=\1.*\1.+)'

কোবির রেটিনা উত্তরের মতো একই রেজেক্স ব্যবহার করুন , কেবল পাওয়ারশেল -replaceঅপারেটরে অন্তর্ভুক্ত। উভয়ই পটভূমিতে .NET-flavre regex ব্যবহার করে কারণ কাজ করে।

বিকল্পভাবে, রেইগেক্স ছাড়াই, 56 বাইট

$b=,0*200;-join([char[]]$args[0]|%{"$_"*($b[$_]++-lt2)})

এস $bসহ প্রাক-জনবহুল সাহায্যকারী অ্যারে তৈরি করে 0। ইনপুট স্ট্রিংটিকে $args[0]একটি charঅ্যারে হিসাবে কাস্ট করে , একটি লুপের মাধ্যমে পাইপ দেয় |%{...}। প্রতিটি পুনরাবৃত্তি বুলিয়ান দ্বারা গুণিত $_স্ট্রিং হিসাবে বর্তমান চরিত্রটিকে আউটপুট করে "$_"যা কেবলমাত্র $TRUE(স্পষ্টতই 1এখানে প্রেরণ করা হয়) যদি সাহায্যকারী অ্যারেতে উপযুক্ত বিন্দু কম হয় 2(যেমন, আমরা ইতিমধ্যে দুবার এই চরটি দেখিনি)। স্ট্রিংগুলির ফলস্বরূপ সংগ্রহটি পেরেনগুলিতে আবদ্ধ হয় এবং -joinএকসাথে একক আউটপুট স্ট্রিং তৈরি করে ed এটি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।


রেজেক্স অপরাজেয়। :) আমি beleave একটি hashtable ভাল তারপর Regex ছাড়া বৈকল্পিক জন্য একটি অ্যারের হল: $b=@{};-join($args|% t*y|?{++$b.$_-lt3})
mazzy

1
@ মমজি রেজিক্স এবং আপনার কোড ছাড়াই ভেরিয়েন্টের জন্য এটি পাওয়ারশেল ২ এর চেয়ে নতুন সংস্করণ হওয়া দরকার। ফলস্বরূপ, আমি মনে করি আমি এই উত্তরটি পরিবর্তন ছাড়াই রাখব। যদিও আপনি আলাদা কোড হিসাবে আপনার কোড পোস্ট করতে পারেন!
অ্যাডমবর্কবার্ক

হ্যাশ টেবিলটি 3.0 সংস্করণে উপস্থিত হয়েছিল? ঠিক আছে. ধন্যবাদ।
mazzy

4

গণিত, 39 বাইট

Fold[If[Count@##<2,Append@##,#]&,{},#]&

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



4

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

t&=Rs3<)

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

ব্যাখ্যা

t      % Input string implicitly. Push another copy
&=     % Matrix of all pairwise equality comparisons of string elements
R      % Keep only upper triangular part, making the rest of the entries zero
s      % Sum of each column. This gives a vector with number of occurrences
       % of the current character up to the current position
3<     % True for entries that are less than 3
)      % Use as logical index into initial copy of the input. Display implicitly

উদাহরণ

ইনপুট ধরে 'aaababbc'নিলে, স্ট্যাকটিতে নির্দেশিত বিবৃতিগুলির পরে নিম্নলিখিতগুলি রয়েছে:

  • t

    'aaababbc'
    'aaababbc'
    
  • t&=

    'aaababbc'
    [ 1 1 1 0 1 0 0 0;
      1 1 1 0 1 0 0 0;
      1 1 1 0 1 0 0 0;
      0 0 0 1 0 1 1 0;
      1 1 1 0 1 0 0 0;
      0 0 0 1 0 1 1 0;
      0 0 0 1 0 1 1 0;
      0 0 0 0 0 0 0 1 ]
    
  • t&=R

    'aaababbc'
    [ 1 1 1 0 1 0 0 0;
      0 1 1 0 1 0 0 0;
      0 0 1 0 1 0 0 0;
      0 0 0 1 0 1 1 0;
      0 0 0 0 1 0 0 0;
      0 0 0 0 0 1 1 0;
      0 0 0 0 0 0 1 0;
      0 0 0 0 0 0 0 1 ]
    
  • t&=Rs

    'aaababbc'
    [ 1 2 3 1 4 2 3 1 ]
    
  • t&=Rs3<

    'aaababbc'
    [ true true false true false true false true ]
    
  • t&=Rs3<)

    'aabbc'
    

4

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

D`(.)(?<=\1.*)

সমস্ত পরীক্ষার কেস যাচাই করুন। ( %প্রতি লাইন মোড সক্ষম করে)

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



3

কে, 18 বাইট

  g:{x{?x@<x}@,/2#'=x}
  g "abc"
"abc"
  g "aaabcbccdbabdcd"
"aabcbcdd"

  /k4 request test vectors from internet
  R:"GET /raw/ftHe0bpE HTTP/1.0\r\nHost: pastebin.com\r\n\r\n"
  t:+0N 2#t@1_&|\(0=#:)'t:1_"\r\n"\:`:http://pastebin.com:80 R 

  /k4 no internet? use a file called "t.txt" in current directory
  t:+0N 2#0:`:t.txt

  /k6?
  t:+0N 2#0:"t.txt"

  /visually inspect test cases
  g't[0]
(();"xx";"abcabc";"abcdabc";"abacbdc";"aabcbcdd")

  /do all tests pass?
  |/ t[1] {$[0=#x;0=#y;x~y]}' g't[0]
1b

K4 বিনামূল্যে ডাউনলোডের জন্য উপলব্ধ ; কে এর উন্নয়ন চলছে । আপনি যদি কেডিবি ডাউনলোড করেছেন, আপনি ব্যাকস্ল্যাশ দিয়ে কেতে যেতে পারেন ।

এটিকে ভাঙ্গা দেখা সবচেয়ে সহজ হতে পারে তবে প্রথমে কিছু বাক্য গঠন: g:xসেট gহয়ে যায় xএক্স{x+1} একটি আর্গুমেন্ট গ্রহণ করে যা একটি ফাংশন । কে-তে কোনও ফাংশনের প্রথম যুক্তি (দ্বিতীয়টি এবং তৃতীয়টি । চতুর্থ প্রয়োজন হয় না)।xyz

এখন:

x:"aaabcbccdbabdcd"

=xগ্রুপ x এর অর্থ , যা উত্পাদন করে:

"abcd"!(0 1 2 10;3 5 9 11;4 6 7 13;8 12 14)

2#'যার অর্থ দুটি গ্রহণ করা (থেকে) যা উত্পাদন করে

"abcd"!(0 1;3 5;4 6;8 12)

আপনি দেখতে পাচ্ছেন, এগুলি প্রতিটি চরিত্রের প্রথম দুটি ম্যাচের অফসেট। 2 সাধারণ যেতে পারে।

,/এর অর্থ প্রত্যেকটিতে যোগ দিন এবং প্রায়শই তাকে বলা হয় রাজেজ । এটি আমাদের কেবল আমাদের অভিধানের মান পাবে। সুতরাং, ,/"abcd"!(0 1;3 5;4 6;8 12)উত্পাদন:

0 1 3 5 4 6 8 12

যা আমাদের বাছাই করা দরকার। {x@<x}@একটি বাগ্ধারা কে প্রোগ্রামারদের প্রায়ই দেখতে (প্রশ্নঃ এটা আহ্বান করা হয় উচ্চক্রমে ), যা বলছেন এ গ্রেড-আপ এক্স এক্স । এটিকে ভেঙে ফেলা:

  <0 1 3 5 4 6 8 12
0 1 2 4 3 5 6 7

সাজানো অ্যারের সূচকগুলি ফেরত পাঠিয়েছে, যা আমরা মূল অ্যারে থেকে নিতে চাই। x এরx@y অর্থ y তাই এই সাজানোর সূচকের সাথে অ্যারেটিকে সূচক করে তোলে (যদি এটি কোনও ধারণা দেয়)।

  {x@<x}@0 1 3 5 4 6 8 12
0 1 3 4 5 6 8 12

যা আমরা কেবল এখন আমাদের মূল অ্যারেতে সূচক করি। আমরা পারে বলে x@এখানে, কিন্তু কে সত্যিই একটি শক্তিশালী ধারণা যা আমরা এর সুবিধা এখানে গ্রহণ করতে পারেন সমর্থন করে: ফাংশন আবেদন ইন্ডেক্স করা হয়। এর অর্থ এই যে a[0]জিরোথ স্লট সন্ধান করা হতে পারে aবা এটি 0ডাকা ফাংশনটিতে প্রয়োগ করা যেতে পারে a। কারণ আমরা প্রয়োজন @পূর্বে {x@<x}কারণ x<yউপায়ে XS YS কম কে মধ্যে অপারেটর একটি dyadic ফর্ম (দুই যুক্তি) এবং একটি পরমাণুসদৃশ্য ফর্ম (এক-যুক্তি) যে APL থেকে আসে আছে:। প্রশ্নটির এই "অ্যাম্বিভ্যালেন্স" নেই।


পিপিসিজিতে আপনাকে স্বাগতম! দুর্দান্ত প্রথম উত্তর। :)
মার্টিন ইন্ডার

আমার কিছু প্রশ্ন আছে. 1. আপনি কি (কিউ / কেডিবি +) এর সাথে লিঙ্ক করেছেন তেমন ভাষা কি 4? ২. আপনি কীভাবে ইনপুটটিতে আপনার ফাংশনটি কল করতে পারেন বা টেস্টভেেক্টর.টেক্সট আইটেমগুলি কীভাবে ফর্ম্যাট করা উচিত তা আপনি প্রদর্শন করতে পারেন?
ডেনিস

@ ডেনিস ১। হ্যাঁ কিউ থেকে g"aaabcbccdbabdcd"
কেতে

ঠিক আছে ধন্যবাদ. ফাইল অংশটি কাজ করতে পারেনি, তবে g"..."কৌশলটি করে। দুর্ভাগ্যক্রমে, আপনার কোড aabbccইনপুট জন্য ফিরে আসে abc
ডেনিস

@ ডেনিস আপনি হয়ত কিছু ভুল করেছেন: {x{?x@<x}@,/2#'=x}"abc"অবশ্যই ফিরে আসবে "abc""aabbcc"আপনি যদি ?স্বতন্ত্রতা মিস করেন তবে এটি ফিরে আসবে ।
জিওকার


2

জাভা 8 লাম্বদা, 90 টি অক্ষর

i->{int[]o=new int[128];String r="";for(char c:i.toCharArray())if(++o[c]<3)r+=c;return r;}

অবরুদ্ধ সংস্করণ:

public class Q86503 {

    static String detriplicate(String input) {
        int[] occurences = new int[128];
        String result = "";
        for (char c : input.toCharArray()) {
            if (++occurences[c] < 3) {
                result += c;
            }
        }
        return result;
    }
}

সমস্ত আসকি অক্ষরের জন্য একটি অ্যারে তৈরি করে। কোনও চরিত্র দেখা দিলে সংশ্লিষ্ট কাউন্টারটি বাড়ানো হবে। এটি 2 এর বেশি হলে চরিত্রটি ফলাফলের স্ট্রিংয়ে যুক্ত হবে না। খুব সহজ, খুব সংক্ষিপ্ত;)


2

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

{.comb.grep({++%.{$_} <3})}

ব্যাখ্যা:

{.comb.grep({++%.{$_} <3})}
{                         } # a function
 .comb                      # get all the characters in the argument
      .grep({           })  # filter
               %.           # an anonymous hash (shared between calls to grep)
             ++  {$_}       # increment the value at the current key (current letter).
                            # if the key doesn't exist, it defaults to 0 (then gets incremented)
                      <3    # return True if it wasn't seen 3 times

(দ্রষ্টব্য: পার্ল 6 তার বোন পার্ল 5 এর মতো "গল্ফ-ওরিয়েন্টেড" নয় ... তাই হ্যাঁ, <প্রয়োজনীয় স্থানটির আগে সেই স্থানটি দরকার The %.{}এটি একটি বেনাম হ্যাশ))



2

স্মাইলব্যাসিক, 77 72 69 68 বাইট

DIM R[#Y]READ S$WHILE""<S$Q=ASC(S$)INC R[Q]?SHIFT(S$)*(R[Q]<3);
WEND

ব্যাখ্যা:

DIM R[128] 'array to store letter frequencies
READ S$ 'get input string
WHILE""<S$ 'much shorter than LEN(S$)
 Q=ASC(S$) 'get ascii value of first character in S$
 INC R[Q]
 ?SHIFT(S$)*(R[Q]<3); 'remove the first character of S$, and print it if there are less than 3 occurrences.
WEND

পিপিসিগিতে আপনাকে স্বাগতম! প্রথম প্রথম পোস্ট!
আর

1

কমন লিস্প, 127

(lambda(s)(map()(lambda(x)(flet((p(b)(1+(position x s :start b))))(setf s(remove x s :start(p(p 0))))))(remove-duplicates s))s)

প্রিটি-প্রিন্ট

(lambda (s)
  (map nil
       (lambda (x)
         (flet ((p (b)
                  (1+ (position x s :start b))))
           (setf s (remove x s :start (p (p 0))))))
       (remove-duplicates s))
  s)


1

কে , 27 বাইট

    f:{x{x@<x}@,/{?2#&x}'x~'/:?x}
    testList:("xxxxx";"abcabc";"abcdabcaba";"abacbadcba";"aaabcbccdbabdcd")
    f'testList
("xx";"abcabc";"abcdabc";"abacbdc";"aabcbcdd")

1

রুবি , 79 62 57 বাইট

এটি বেশ স্বাস্থ্যকর, তবে আমি নিশ্চিত না যে আমি এই মুহূর্তে আরও ভালভাবে গল্ফ করতে পারি। যে কোনও গল্ফিং পরামর্শ স্বাগত। এটি অনলাইন চেষ্টা করুন!

সম্পাদনা করুন: -17 বাইটস দ্বিগুণ অক্ষর মুছে ফেলার জন্য গল্ফিয়ার উপায় প্রস্তাব করে মান কালি ধন্যবাদ জানায়। .uniqপদ্ধতি অপসারণ থেকে -5 বাইট ।

->s{s.chars.map{|a|s[s.rindex a]=""while s.count(a)>2};s}

Ungolfed:

def g(s)
 s.chars.each do |a|
  while s.count(a) > 2
   i = s.rindex(a)
   s[i] = ""
  end
 end
 return s
end

62 বাইট:->s{s.chars.uniq.map{|a|s[s.rindex a]=""while s.count(a)>2};s}
মান কালি

1

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

v=>v.filter(x=>!(v[x]+=x)[11])

@ Edc65 গণনা করার জন্য কিন্তু অ্যারে ফিল্টার সহ যে পদ্ধতিটি এসেছে তা ব্যবহার করে। প্রথমবারের অক্ষরটি উপস্থিত হয়, অবজেক্টের মান "অপরিবর্তিত" প্লাস অক্ষর (অর্থাত্ "অপরিজ্ঞাত") পায়। পরের বারের অবজেক্টের মান "অপরিজ্ঞাত XXX" হয়ে যায়।

এর পরে, ভি [এক্স] [১১] সত্য ফিরে আসে এবং অপারেটরের সাথে মিলিত না হলে, মিথ্যা, অর্থাত্ অক্ষর যা ইতিমধ্যে দু'বার প্রদর্শিত হয়েছে তা ফিল্টার করা হবে।


0

জাভাস্ক্রিপ্ট (বাইরের গ্রন্থাগার ব্যবহার করে) (৮০ বাইট)

এটি একটি ভাল ছিল! জিতেনি তবে মজা লাগল

n=>{a={};return _.From(n).Where(x=>{b=a[x]?a[x]++:a[x]=1;return b<2}).Write("")}

লিবে লিঙ্ক: https://github.com/mvegh1/Eeumerable/

কোড ব্যাখ্যা: পদ্ধতিটি একটি স্ট্রিং গ্রহণ করে, গ্রন্থাগার এটি একটি চর অ্যারে হিসাবে বিশ্লেষণ করে এবং হ'ল ক্লজটি একটি জটিল ফিল্টারিং শিকারী যা বর্তমান চরটির উপস্থিতির জন্য 'এ' হ্যাশম্যাপটি পরীক্ষা করে। যদি উপস্থিত থাকে তবে ইনক্রিমেন্ট কাউন্টার, অন্যথায় 1 তে সেট করুন If <2 যদি, প্রিডিকেট (এবং বর্তমান চর) পাস হয়, তবে ব্যর্থ হন

এখানে চিত্র বর্ণনা লিখুন


আপনি একটি ব্যবহার এড়াতে পারেন returnকিন্তু আপনার ফাংশন বন্ধনীর মধ্যে একটি এক্সপ্রেশন একটি কমা দিয়ে পৃথক করা তালিকা তৈরীর: n=>(a={},_From(n)....)। শেষ প্রকাশটি হ'ল রিটার্ন মান। আপনার Whereফাংশন, আপনি অন্তর্বর্তী বাদ দিতে পারে bসম্পূর্ণরূপে নিয়োগ বা বৃদ্ধি ফল বিরুদ্ধে তুলনা করে: x=>(a[x]?a[x]++:a[x]=1)<2
অ্যাপসিলাররা

অবশেষে, আপনি স্ট্রিং-স্প্লিট উপবৃত্ত এবং এর filterসাথে join: ব্যবহার করে কোনও বাহ্যিক লাইব্রেরি (এবং বাইট সংরক্ষণ করুন) এড়াতে পারবেন [...n].filter(...).join("")। পরিবর্তন Whereকরার সময় সত্য / মিথ্যা যুক্তিটি ফ্লিপ করুন filter
অ্যাপসিলাররা

আহ আহ ভালো পর্যবেক্ষণ! আমি আপনার পরামর্শটি পরে নিবিড়ভাবে দেখে
নিই

0

ক্লোজার, 72 বাইট

#(apply str(reduce(fn[r c](if(<(count(filter #{c}r))2)(conj r c)r))[]%))

অনেকগুলি বাইট ...


0

পাস্কাল (এফপিসি) , 103 বাইট

var a:array['a'..'z']of word;c:char;begin repeat read(c);inc(a[c]);if a[c]<3then write(c)until eof end.

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

ব্যাখ্যা:

var a:array['a'..'z']of word; //used for counting occurences of characters in the input
                              //array indices are accessed by chars
    c:char;
begin
  repeat
    read(c);                  //read a character from input
    inc(a[c]);                //increment the count of that character (its number in array)
    if a[c]<3 then write(c)   //if this is character's 1st or 2nd occurence, output it
  until eof                   //go back to reading if input is not read completely
end.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.