আমি আগে এই সংখ্যাটি দেখিনি!


31

একটি প্রোগ্রাম লিখুন যা অ-শ্বেতস্পেস অক্ষরের একটি স্ট্রিংয়ের মধ্য দিয়ে যায় (আপনি ধরে নিতে পারেন যে সেগুলি অঙ্ক 0হয় 9তবে তাদের প্রক্রিয়াজাতকরণের কোনও কিছুই এর উপর নির্ভর করে না) এবং নিম্নলিখিত নিয়ম অনুসারে স্পেস যুক্ত করে।

  1. বর্তমান টোকেনটি খালি স্ট্রিং হোক এবং পূর্বে নির্গত টোকেনগুলি একটি খালি সেট হয়ে উঠুক।
  2. স্ট্রিংয়ের অক্ষরগুলির মধ্য দিয়ে আইট্রেট করুন। প্রতিটি চরিত্রের জন্য, প্রথমে বর্তমান টোকেনে অক্ষরটি যুক্ত করুন। তারপরে যদি বর্তমান টোকেনটি ইতিমধ্যে নির্গত টোকেনগুলির সেটে না থেকে থাকে তবে সেই সেটটিতে বর্তমান টোকন যুক্ত করুন এবং নতুন বর্তমান টোকেনটি খালি স্ট্রিং হতে দিন।
  3. আপনি যদি স্ট্রিংয়ের শেষে পৌঁছে যান বর্তমান টোকেনটি খালি থাকে তবে স্থান নির্ধারণের দ্বারা পূর্বে নির্গত টোকেনগুলি নির্গমন হিসাবে আউটপুট করুন। অন্যথায় আউটপুট মূল স্ট্রিং ভার্ব্যাটিম।

ইনপুট

STDIN এ ইনপুটটি অঙ্কের ক্রম হওয়া উচিত।

আউটপুট

প্রোগ্রামটি পদক্ষেপ 3 এ উল্লিখিত ফলাফল মুদ্রণ করা উচিত।

নমুনা

নমুনা ইনপুট

2015
10101010
4815162342
101010101010
3455121372425
123456789101112131415
314159265358979323846264338327950288419716939937

নমুনা আউটপুট

2 0 1 5
10101010
4 8 1 5 16 2 3 42
1 0 10 101 01 010
3 4 5 51 2 1 37 24 25
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
3 1 4 15 9 2 6 5 35 8 97 93 23 84 62 64 33 83 27 95 0 28 841 971 69 39 937

এটি কোড গল্ফ, সুতরাং মানক সিজি বিধি প্রযোজ্য। বাইটস মধ্যে সংক্ষিপ্ততম প্রোগ্রাম।

(মন্তব্যে কোনও স্পষ্টতার জন্য দয়া করে অনুরোধ করুন I'm আমি এখনও এটিতে নতুন Thanks ধন্যবাদ!)


10
4815162342আমি দেখছি আপনি সেখানে কি করেছেন, ব্রোথা
315

16
প্রস্তাবিত ওএআইএস এন্ট্রি: এই প্রক্রিয়া দ্বারা কমপক্ষে দুটি বিভাগে বিভক্ত নম্বরগুলি।
মার্টিন ইন্ডার

3
@ ইসমাইলমিগুয়েল পদক্ষেপ 5 (অন্য যে কোনও পদক্ষেপ হিসাবে) একবারে কেবলমাত্র এক অঙ্ক অগ্রসর করতে পারে । একবার আপনি পেয়ে 1 0 10 যাবেন, পরবর্তী পুনরাবৃত্তিটি 1(ইতিমধ্যে ব্যবহৃত) সন্ধান করবে (তারপরে একটি সন্ধানের জন্য আগে 10থেকেই ব্যবহার করা হবে), তারপরে একজনকে অনুসন্ধানের জন্য অগ্রসর করুন 101, যা নতুন এবং 'যুক্ত' হবে। এরপরে এটি একটি স্থান যুক্ত করবে এবং আপনি একটি নতুন পেতে চাইবেন 0, যা ইতিমধ্যে ব্যবহৃত হয়েছে, তবে স্ট্রিংয়ের শেষে এখানে রয়েছে। সুতরাং, আউটপুটটি হবে 1 0 10 101 0, যা অবৈধ ( 0পুনরাবৃত্তি), এবং স্ক্রিপ্টটি অবশ্যই কেবল ইনপুট স্ট্রিংকে আউটপুট করে। এটা শুধুমাত্র বানাতে পারে 1010যদি 101ইতিমধ্যেই ব্যবহার করা হয়েছিল।
জানুস বাহস জ্যাকেট

3
@ ক্যাস্পার্ড নং If a unique number cannot be formed at the end of the string, then the input should be printed verbatim10101010 বিভক্ত করা যাবে না তাই এটি প্রিন্ট করা আছে।
edc65

1
আপনি যখন পদক্ষেপ 5 এ প্রবেশ করবেন তখন স্থানটি তার পরে 1থাকবে যা পুনরাবৃত্তি হবে। সুতরাং পরিবর্তে আপনি স্থান 5 এ ডানদিকে সরান, এবং তারপরে আপনি আবার ডানদিকে আবার সরান 4 য় ধাপে, এবং আপনি আবার পদক্ষেপ 5 প্রবেশ করুন এবং তৈরি করবেন 101
পিটার টেলর

উত্তর:


9

পাইথ, 22 বাইট

 faW!}=+kTYY~kdz?tkzsY

নেতৃস্থানীয় স্থান গুরুত্বপূর্ণ।


13

রেটিনা , 68 61 বাইট

+`\b(\w+?)(?<!\b\1 .*)(\w+)$
$1 $2
(?=.* (.+)$(?<=\b\1 .+)) 
<empty>

<empty>একটি খালি লাইন। Line. লাইনে ট্রেলিং স্পেসটি নোট করুন আপনি -sপতাকাটি দিয়ে একটি একক ফাইল থেকে উপরের কোডটি চালাতে পারেন ।

ব্যাখ্যা

+`\b(\w+?)(?<!\b\1 .*)(\w+)$
$1 $2

এই প্রথম পদক্ষেপটি 1 থেকে 6 পর্যন্ত বিধি প্রয়োগ করে It এটি একটি রেইজেক্স প্রতিস্থাপন যা স্ট্রিং পরিবর্তন বন্ধ না হওয়া অবধি বারবার প্রয়োগ করা হয় ( +এটিই এর জন্য)। প্রতিটি পদক্ষেপে আমরা স্ট্রিং থেকে বাম থেকে ডানে একক স্পেস যুক্ত করি (চ্যালেঞ্জের নিয়ম অনুসরণ করে)। রেজেক্স সংখ্যার সংক্ষিপ্ততম স্ট্রিংয়ের সাথে মেলে যা ইতিমধ্যে স্ট্রিংয়ের প্রক্রিয়াজাত অংশে উপস্থিত হয়নি। আমরা নিশ্চিত করেছিলাম যে আমরা বাউন্ডারি শব্দের সাথে বাকী স্ট্রিংয়ের একটি উপসর্গ দেখছি \bএবং এটি পরীক্ষা করে নিচ্ছি যে ফাঁকা স্থান ছাড়াই আমরা স্ট্রিংয়ের শেষ প্রান্তে পৌঁছতে পারি (\w+)$। পরেরটিও নিশ্চিত করে যে আমরা প্রতি পদে কেবল একটি প্রতিস্থাপন করব perform

(?=.* (.+)$(?<=\b\1 .+)) 
<empty>

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


11

Pyth, 24 23 বাইট

VzI!}=+kNYaY~k"";?kzjdY

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

VzI!}=+kNYaY~k"";?kzjdY    Implicit: z=input(), k='', Y=[], d=' '
Vz              ;          For N in z:
     =+kN                    Append N to k
  I!}    Y                   Is the above not in Y?
          aY k               Append k to Y
            ~k""             After append, reset k to ''
                 ?k        Is k truthy (i.e. not '')
                   z       Print original input
                    jdY    Otherwise print Y joined on spaces

একটি বাইট সংরক্ষণ করার জন্য @ ফ্রাইআমএটিজিমনকে ধন্যবাদ: o)


@ ফ্রাইআম TheEggman একটি ভাল আহ্বান, আমি কে এর মূল মূল্য সংরক্ষণ করার চেষ্টা করতে পেরেছিলাম
Sok

8

পাইথন 3, 92 বাইট

i,n,*o=input(),""
for c in i:n+=c;o,n=[o+[n],o,"",n][n in o::2]
print([" ".join(o),i][n>""])

মূলত @ উইলেমের সমাধানের একটি ভারী গল্ফযুক্ত সংস্করণ।


[" ".join(o),i][n>""]
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান আহ শীতল, আমি এর সাথে চেষ্টা করেছিলাম bool(n)কিন্তু আমি ভেবে দেখিনি n>""
orlp

6

পাইথন 3, 100 99 বাইট

o=[];n="";i=input()
for c in i:
 n+=c
 if not n in o:o.append(n);n=""
print(i if n else" ".join(o))

2
আমি আপনার বাইট গণনা স্থির করেছি। এছাড়াও, আপনার কাছ থেকে স্থানটি সরিয়ে নেওয়া উচিত else "
mbomb007

1
কিছু সাধারণ গল্ফ এছাড়াও, আপনার মূল স্কোরটি ছিল 100 বাইট, আমি মনে করি।
FryAmTheEggman

শীতল ধন্যবাদ! আমি জানতাম না যে "অন্য" এর পরে স্থানটি সরানো যেতে পারে। অন্য দিন বেঁচে ছিল, অন্য দিন শিখেছে :)
উইলেম

5

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

:_:_{h:0<|bhN,?hh:NrcH,?hB(l1,-1=A;BbA),?rhL:I(mH:Ar:[L]c:1&;:[H]:\"~w \"w,L:[H]c:_:Ar:1&)}

এটি আমাকে বুঝতে পেরেছিল যে সিনট্যাক্সটি পরিবর্তন করার দরকার আছে সে সম্পর্কে অনেক কিছুই আছে ...

ব্যাখ্যা

:_:_              § Creates a list [Input,[],[]] 
{...}             § Define a new predicate between the brackets and call it with the previous list as input
h:0<              § If the head of the input is negative, stop
|                 § Else
bhN,              § Second element of Input is called N
?hh:NrcH,         § N concatenated with the first element of Input is H
?hB(l1,-1=A;BbA), § Remaining digits A are either -1 if there's only one digit left or all the digits but the head otherwise
?rhL:I            § List of used integers is called L
(
   mH:Ar:[L]c:1&  § If H is already in L, call the predicate with input [A,H,L]
   ;              § Else
   :[H]:\"~w \"w, § Print H followed by a space
   L:[H]c:_:Ar:1& § Call the predicate with input [A,[],M] where M is L with H appended to it
)

4

সিজেম, 26 বাইট

LLq{+_a2$&{a+L}|}/:X+X!S**

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

L        e# Push an empty array to keep track if the previous segments.
L        e# Push an empty array to build the current segment.
q{       e# For each character in the input...
  +      e#   Add it to the current segment.
  _a2$&  e#   Duplicate and check if it's already in the segment list.
  {      e#   If not...
    a+L  e#     Add it to the list and push a new empty array for the next segment.
  }|
}/
:X+      e# Store the trailing segment in X and add it's *characters* to the list.
         e# For valid splittings, this trailing segment will be empty, so that the
         e# list remains unchanged.
X!       e# Push X again and take the logical NOT.
S*       e# Get that many spaces, i.e. 1 for valid segments and 0 otherwise.
*        e# Join the list with this string between elements.

3

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

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

নীচে স্নিপেট চলমান পরীক্ষা করুন একমাস্ক্রিপ্ট l অনুবর্তী ব্রাউজারে। ফায়ারফক্সের সাথে বিকাশিত, পরীক্ষিত এবং সর্বশেষতম ক্রোমে চলছে।

/* Test: redirect console.log */ console.log=x=>O.innerHTML+=x+'\n';

F=s=>{for(z=s,b=l=o=' ';s[+l];)~o.search(b+(n=s.slice(0,++l)+b))||(s=s.slice(l),o+=n,l=0);console.log(s?z:o)}

/* Test cases */
test = [
  '2015',
,'10101010'
,'4815162342'
,'101010101010'
,'3455121372425'
,'123456789101112131415'
,'11312123133'
,'314159265358979323846264338327950288419716939937']

test.forEach(t=>{console.log('\n'+t);F(t)})
<pre id=O></pre>


2

জিএনইউ সেড, 83 77 73 71 বাইট

(একটি অতিরিক্ত স্কোর করুন কারণ আমাদের -rপতাকা প্রয়োজন )

h
s/./&_/
:
/(\b[^ ]+).*\b\1_/{
s/_(.)/\1_/
t
g
}
s/_(.)/ \1_/
t
s/_//

অভ্যন্তরীণ লুপটি পুনরাবৃত্ত ক্রমের জন্য পরীক্ষা করে এবং বিভাজকের পরে কোনও অনন্য সংখ্যা উপস্থিত না হওয়া অবধি অক্ষরগুলি সংযোজন করে _। বাইরের লুপটি _পাশাপাশি চলে moves

প্রসারিত, টীকাযুক্ত সংস্করণ:

#!/bin/sed -rf

# Stash original in hold space
h

# Add separator
s/./&_/

:
# If current candidate is a duplicate, ...
/(\b[^ ]+).*\b\1_/{
#  ...then attempt to lengthen it ...
s/_(.)/\1_/
# ... and repeat if we succeeded, ...
t
# ... otherwise, restore original string
g
}
# Insert a space, and move our separator along
s/_(.)/ \1_/
t

# Remove the separator if we still have it
s/_//

আপনি উভয়কে tএক সাথে সংযুক্ত করতে পারেন।
ব্যবহারকারী112638726

এছাড়াও 2 টি ক্যাপচার গোষ্ঠীর কোনও কারণ /((\b[^ ]+).*\b\2)_/{হিসাবে এটি আবারও লেখা যেতে পারে /(\b[^ ]+).*\b\1_/{
ব্যবহারকারী112638726

কোনও সমস্যা নেই :), আপনার \1যদিও রেফারেন্সটি পরিবর্তন করতে হবে !
ব্যবহারকারী112638726

1

রুবি, 57 + 1 = 58 বাইট

s=''
l={}
$_.chars{|c|l[s<<c]||=s=''}
l[s]||$_=l.keys*' '

কমান্ড লাইন পতাকা ব্যবহার করে -p(বা plযদি আপনার ইনপুটটিতে একটি নতুন লাইনের চিহ্ন থাকে)। রুবি হ্যাশ অভিধানের বেশ কয়েকটি বৈশিষ্ট্য অনুসন্ধান করে: আপনি কীটি পরিবর্তন না করে আপনি কীটি সংজ্ঞায়িত করার জন্য ব্যবহৃত স্ট্রিংটি নিরাপদে রূপান্তর করতে পারেন (যা অন্যান্য পরিবর্তনীয় ধরণের জন্য কাজ করে না), .keysকীগুলি সেগুলি সন্নিবেশ করা হয়েছিল তার ক্রমটি প্রদান করে এবং []||=অপারেটর প্রদত্ত কীটি ইতিমধ্যে সেখানে আছে কিনা তা শাখা প্রশাখার এক ক্ষুদ্র উপায় সরবরাহ করে।



1

পিএইচপি - 148 বাইট

দুর্দান্ত চ্যালেঞ্জ, প্রচুর মজা!

$x=fgets(STDIN);$w=array();$k='';$l='';for($i=0;$i<strlen($x);$i++){$k.=$x[$i];if(!isset($w[$k])){$l.=$k.' ';$w[$k]=1;$k='';}}echo strlen($k)?$x:$l;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.