এই স্ট্রিংগুলি এনক্লাক্টাইফাই করুন


42

এই মন্তব্য চেইন দ্বারা অনুপ্রাণিত ...

আমি enklactএই চ্যালেঞ্জ থেকে বেরিয়ে যেতে চাই তবে আমি পারিনা ...

এনথ্ল্যাক্ট (v) এর @ETH প্রোডাকশনগুলি : অনন্য উপাদানগুলির সমন্বয়ে একটি উপশক্তি ব্যবহার করে একটি অনুসন্ধান সারণী বাস্তবায়ন করতে।


এনক্ল্যাক্টিং একটি লুকিং টেবিলটি সংকোচনের জন্য খুব দরকারী উপায়। উদাহরণস্বরূপ, ধরুন যে আপনার কাছে রঙগুলির নীচের তালিকা ছিল:

red
green
blue
yellow
purple
orange

আপনি যদি ইনপুট হিসাবে কোনও রঙ নিতে এবং এই তালিকায় এটি সূচকটি ফিরিয়ে দিতে সক্ষম হতে চান তবে স্পষ্টত সরল পথ রয়েছে:

["red", "green", "blue", "yellow", "purple", "orange"].index(input())

তবে একটি উপায় আছে যা আমরা কম বাইটের মাধ্যমে এটি করতে পারি:

"rgbypo".index(input()[0])

এটি কাজ করে কারণ প্রতিটি স্ট্রিংয়ের প্রথম (বা 0'তম) সূচকটি অনন্য। এই উদাহরণটি সুস্পষ্ট, তবে কখনও কখনও এটি কিছুটা শক্ত। যদি আমরা এই তালিকার জন্য একটি সারণী তৈরি করতে চাই?

Sweet Onion Chicken Teriyaki
Oven Roasted Chicken
Turkey Breast
Italian BMT
Tuna
Black Forest Ham
Meatball Marinara

এই ক্ষেত্রে, আমরা এটি করতে পারি না:

"SOTITBM".index(input()[0])

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

"enklact".index(input()[3])

এই ক্ষেত্রে, "এনক্লে্যাকশন স্ট্রিং" হ'ল "এনক্ল্যাক্ট"।

যা আমাদের আজকের চ্যালেঞ্জের দিকে নিয়ে যায় ...

স্ট্রিংয়ের একটি তালিকা দেওয়া হয়েছে, কোনও বৈধ এনক্লেকশন স্ট্রিংটি ফিরিয়ে দিন। অথবা অন্য কথায়, স্ট্রিংগুলির একটি তালিকা দেওয়া হলে, প্রতিটি অক্ষর অনন্য যেখানেই কোনও নতুন স্ট্রিং ফিরিয়ে দিন এবং প্রতিটি স্ট্রিংয়ের প্রথম অক্ষরে যোগদান করে স্ট্রিংটি গঠিত হয়।

যদি কোনও বৈধ এনক্লেকশন স্ট্রিং না থাকে, আপনার জমাটি অবশ্যই একটি খালি স্ট্রিং বা তার পরিবর্তে একটি সামঞ্জস্যপূর্ণ মিথ্যা মান প্রদান করতে হবে। যথারীতি, হয় ফাংশন বা সম্পূর্ণ প্রোগ্রাম অনুমোদিত, এবং ইনপুট / আউটপুট ফর্ম্যাটগুলি অনুমতিযোগ্য (কারণের মধ্যে)।

প্রতিটি স্ট্রিংয়ে কেবল প্রিন্টযোগ্য এএসসিআইআই থাকবে এবং এই চ্যালেঞ্জটি কেস সংবেদনশীল।

এটি , তাই আপনার পছন্দের ভাষায় সম্ভব সংক্ষিপ্ততম প্রোগ্রামটি লেখার চেষ্টা করুন!

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

Input:
Programming
Puzzles
Code
Golf

Output (any one of these):
"ozdl"
"gzef"


Input:
the quick
brown fox
jumped over
lazy dogs

Output:
"tbjl"
"hrua"
"eomz"
" wpy"
"qne "
"if o"
"kxvs"

Note that "u dd" and "coog" are not valid.


Input:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Output:
""


Input:
AbC
aBc
bbC

Output:
"Aab"


Input:
@#$%^_
Hello_World
How are you?

Output:
"#eo"
"$lw"
"%l "
"^oa"


Input:
a
ab
ac

Output:
""

আমরা বৈধ স্ট্রিংয়ের একটি তালিকা ফেরত দিতে পারি?
লিরিক

@ লিরিকলি হুঁ, এখন আমি এটি সম্পর্কে চিন্তা করি, এটি আরও অর্থবোধ করে। তবে যেহেতু ইতিমধ্যে উত্তর রয়েছে এবং প্রথমটি ফেরত দেওয়া খুব বেশি বয়লারপ্লেট নয়, তাই আমি না বলব, এটি কোনও বৈধ স্ট্রিং হওয়া উচিত।
DJMcMayhem

আমরা কি গ্যারান্টি দিতে পারি ইনপুটযুক্ত স্ট্রিংগুলির কোনওটিই খালি নেই?
musicman523

6
ধারাবাহিক মিথ্যা মানটি কি ধারাবাহিক ধরণের ত্রুটি হতে পারে?
স্টিভি গ্রিফিন

2
মাফ করবেন, তবে আমি মনে করি সঠিক ক্রিয়াটি এনক্ল্যাক্টেট
এরিক দ্য আউটগল্ফার

উত্তর:


8

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

lambda l:{len({*d}):''.join(d)for d in zip(*l)}.get(len(l))

এনক্ল্যাক্ট সহ একটি স্ট্রিং দেয়, অন্যথায় কিছুই নয়


8

পাইথন 2 , 68 67 61 বাইট

lambda a:`{0:j for j in zip(*a)if len(set(j))==len(j)}`[6::5]

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

উন্নতি


আউটপুট যদি স্ট্রিং না হয়:

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

lambda a:[j for j in zip(*a)if len({*j})==len(j)]

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



@ জোকিং মার্জিত এবং বাস্তবায়িত।
নিল

আমি মনে করি max(`j`[2::5]for j in[""]+zip(*a)if len(set(j))==len(j))কাজ করে, একটি বাইট সংরক্ষণ করতে।
লিন

@ লিন ধন্যবাদ এবং আপডেট হয়েছে।
নীল

7

রেটিনা , 43 32 বাইট

+/^(.).+^\1|^$/ms&m`^.

|""Lm`^.

এটি অনলাইন চেষ্টা করুন! সম্পাদনা করুন: @ মার্টিনইেন্ডারে 11 টি বাইট সংরক্ষণ করা হয়েছে। ব্যাখ্যা:

+

ইনপুট পরিবর্তিত হওয়ার সময় পুনরাবৃত্তি করুন ...

/^(.).+^\1|^$/ms&

... কেবলমাত্র যদি একটি লাইন খালি থাকে বা দুটি লাইন একই অক্ষর দিয়ে শুরু হয় ...

m`^.

... প্রতিটি লাইনের প্রথম অক্ষর মুছুন। সুতরাং পুনরাবৃত্তি বন্ধ হয় যদি ক) সমস্ত লাইন বিভিন্ন অক্ষর দিয়ে শুরু হয়, এই ক্ষেত্রে শর্তটি ব্যর্থ হয় এবং ইনপুট পরিবর্তন হয় না, বা খ) কমপক্ষে একটি লাইন খালি হয়ে যায়, সেক্ষেত্রে সমস্ত অক্ষর শেষ পর্যন্ত মুছে ফেলা হয়, কোন সময়ে ইনপুট পরিবর্তন করা বন্ধ করে দেয়।

|""L`^.

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


রিজেক্স বিকল্পগুলি রেগেক্স মোডিফায়ারও নেয় (সমাপ্তির ডিলিমিটারের পরে তাদের সরাসরি লিখে): tio.run/##K0otycxLNPz/…
মার্টিন

আসলে, এটি আপনাকে দ্বিতীয় পর্যায় থেকে সম্পূর্ণ মুক্তি দিতে দেয়: tio.run/##K0otycxLNPz/X1s/… (একরকম mকোনও গ্রুপের সাথে এখানে প্রয়োগ করতে পারে না , দেখে মনে হচ্ছে শর্তসাপেক্ষ পর্যায়ে বিকল্পটি প্রচার করে না)।
মার্টিন ইন্ডার

আহ, অবশ্যই, শর্তাধীন লুপের পরিবর্তে শর্তযুক্ত লুপ করুন, এটি আপনার প্রথম সংস্করণে অসীম লুপ বাগ সমাধান করে। খুব ঝরঝরে!
নীল

5

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

f x|elem""x=""|y<-head<$>x,and[filter(==a)y==[a]|a<-y]=y|1<2=f$tail<$>x

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

BMO 3 বাইট সংরক্ষিত any null xelem""x

Orjan Johansen সঙ্গে একটি বাইট সংরক্ষিত sum[1|b<-y,a==b]<2filter(==a)[y]==[a]

ব্যাখ্যা

f x|elem""x=""                      -- Once any of the strings is empty, return "".
   |y<-head<$>x                     -- Otherwise, let y be all the first letters...
   ,and[                 |a<-y]     -- If, for all a in y,
        filter(==a)y==[a]           -- a occurs just once in y:
                               =y   -- return y.
   |1<2=f$tail<$>x                  -- Else, chop off all the first letters and recurse.

Prelude.head: empty listকোনও সমাধান না থাকলে ত্রুটি ( ) ছুঁড়ে ফেলা হলে ঠিক ,১ বাইটের|elem""x="" জন্য মুছে ফেলা যায় ।


1
সংক্ষিপ্ত পরীক্ষা:filter(==a)y==[a]
janrjan জোহানসেন

4

রুবি , 38 বাইট

->x,*y{x.zip(*y).find{|z|z==z-[p]|[]}}

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

কোনও বাগ নির্দেশ করার জন্য জিবিকে ধন্যবাদ।


কোনও মিল না থাকলে এবং প্রথম স্ট্রিংটি সবচেয়ে কম নয় F
জিবি

@ জিবি আপনি একটি উদাহরণ প্রদান করতে পারেন, দয়া করে? আমি আপনার বর্ণনা অনুসারে আমার শেষ পরীক্ষাটি পরিবর্তন করেছি এবং এটি কার্যকর হয়েছে।
কিরিল এল।

["এবিসি", "এসি", "এসিডি"]
জিবি

এখন আমি দেখছি, আপনি ঠিক বলেছেন। স্থির করা উচিত।
কিরিল এল।

4

পাইথ , 6 বাইট

>1{I#C

পরীক্ষা স্যুট.

আউটপুটটি একটি সিঙ্গলটন তালিকা, ডিফল্টরূপে অনুমোদিত ; তালিকাটি [] (খালি তালিকা, মিথ্যা) স্ট্রিংটি এনক্ল্যাফিকেশন না করা হলে ফিরে আসে

ব্যাখ্যা

> 1 {I # C - সম্পূর্ণ প্রোগ্রাম।
     সি - ইনপুট স্থানান্তর, অনুপস্থিতি ক্রপ।
    # - দ্বারা ফিল্টার করুন:
  {আমি - ছাঁটাইয়ের আওতায় আক্রান্ত।
> 1 - টুকরো টুকরো 1. তালিকা [: 1] পাইথনে।

পাইথ , 5 বাইট

এটি বৈধ হত যদি ক্র্যাশিংয়ে মিথ্যা মান হিসাবে গণ্য হত।

h{I#C

পরীক্ষা স্যুট.


3

হাস্কেল , 76 74 বাইট

f t=last$"":(id=<<foldr(zipWith(#))([[]]<$t)t)
x#[s]=[x:s|all(/=x)s]
x#e=e

এটি অনলাইন চেষ্টা করুন! যদি এমন কোনও স্ট্রিং উপস্থিত না থাকে তবে সর্বশেষ বৈধ লুকিং স্ট্রিং বা একটি খালি স্ট্রিং দেয়।


71 69 বাইট

মিথ্যা মান হিসাবে অনুমোদিত ধারাবাহিক ব্যতিক্রম যদি ছুঁড়ে দেওয়া হয়:

f t=head$id=<<foldr(zipWith(#))([[]]<$t)t
x#[s]=[x:s|all(/=x)s]
x#e=e

এটি অনলাইন চেষ্টা করুন! empty listকোনও স্ট্রিং না পাওয়া গেলে একটি ব্যতিক্রম ছুঁড়ে , অন্যথায় প্রথম বৈধ স্ট্রিংটি প্রদান করে।

-২ বাইট ধন্যবাদ অর্জান জোহানসেনকে


1
notElem x সংক্ষিপ্ত করা যেতে পারে all(/=x)
janrjan জোহানসেন

2

জেলি , 7 বাইট

z0Q€fZḢ

পূর্ণসংখ্যা 0 প্রদান করে যদি স্ট্রিংগুলি এনক্লেক্টাইফাই করা না যায়।

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

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

z0Q€fZḢ  Main link. Argument: A (string array)

z0       Zip/transpose, filling shorter rows with 0.
  Q€     Unique each deduplicate resulting string.
     Z   Zip/transpose, without using a filler.
    f    Filter; keep only string that appear in the results to both sides.
      Ḣ  Head; extract the first string. Returns 0 if the array is empty.


2

স্ট্যাক্স , 9 8 বাইট

åτIⁿs↓µg

এটি চালান এবং এটি ডিবাগ করুন

ব্যাখ্যা (প্যাকযুক্ত):

M{c0-u=}j Full program, implicit input
          e.g. ["Programming", "Puzzles", "Code", "Golf"]
M         Transpose
                ["PPCG", "ruoo", "ozdl", "gzef", "rl\0\0", "ae\0\0", "ms\0\0", "m\0\0\0", "i\0\0\0", "n\0\0\0", "g\0\0\0"]
 {     }j Find first matching element:
            e.g. "PPCG"
  c0-       Copy and remove zero bytes (padding)
                 "PPCG" "PPCG"
     u      Unique
                 "PPCG" "PCG"
      =     Check if equal:
                 1
          First matching here: "ozdl". If none is found, the stack is empty
          Implicit output if anything on stack

2

আর , 127 বাইট

function(S,s=sapply(S,substring,x<-1:max(nchar(S)+1),x))cat(rbind(s[!apply(s,1,anyDuplicated)&!rowSums(s==""),],"")[1,],sep="")

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

sapplyসাধারণত matrixযখন সমস্ত length(FUN(X[[i]]))সমান হয় তখন প্রদান করে length(FUN(X[[i]]))==1, যখন ব্যতীত , এটিকে একটি প্রদান করে vector। ম্যাট্রিক্স অপারেশনগুলি ব্যবহার করার জন্য, এরপরে substringগ্যারান্টি দেওয়ার প্রয়োজনের চেয়ে আমাদের আরও matrixকিছুটা এগিয়ে যেতে হবে , যার কারণে এটি xপ্রসারিত max(nchar(S)+1)

এরপরে আমরা সারিগুলির জন্য ফিল্টার করি যার কোনও সদৃশ নেই এবং খালি স্ট্রিং নেই। যেহেতু আমরা কেবল একটি একক স্ট্রিং ফিরিয়ে আনতে পারি, আমরা প্রথমটি গ্রহণ করি, যদি মানদণ্ডগুলি পূরণ না করে এমন কোনও সারি না থাকে তবে আমরা একটি ত্রুটি ছুঁড়ে দেব, তাই আমরা ""শেষের একটি অতিরিক্ত সারি যুক্ত করব ।

তারপরে আমরা enklactআইফাইড স্ট্রিং বা খালি স্ট্রিংটি প্রিন্ট আউট করব ।


2

আর , 116 107 95 বাইট

R + pryr

pryr::f(for(i in 1:min(nchar(v)))`if`(anyDuplicated(t<-substr(v,i,i)),0,{cat(t,sep="")
break}))

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

বেস আর

function(v)for(i in 1:min(nchar(v)))`if`(anyDuplicated(t<-substr(v,i,i)),0,{cat(t,sep="")
v=0})

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

এই দুটি সংরক্ষণ রূপগুলো 9 ধন্যবাদ বাইট : Giuseppe

ব্যাখ্যা:

এটি কার্যকরভাবে ভেক্টরের সমস্ত স্টিংকে vসংক্ষিপ্ততম দৈর্ঘ্যে ছিন্ন করে এবং পরবর্তী সূচকগুলির মাধ্যমে পুনরাবৃত্তি করে। তারপরে নির্বাচিত বর্ণগুলির মধ্যে কোনও সদৃশ আছে কিনা তা পরীক্ষা করে এবং যদি তা না হয় তবে সেগুলি এক সাথে আটকানো এবং মুদ্রণ করে cat। যদি সমস্ত সূচকগুলি সদৃশ ফলাফলগুলি ফেরত দেয় তবে এটি খালি স্ট্রিংটি প্রিন্ট করে। লুপটি থামাতে, বা বেস আর ফাংশনটি ভ্যাক্টরকে লুপ ভাঙার জন্য শূন্য করার সাথে
সমস্ত বেনামে pryrফাংশনে আবৃত break


1
সুন্দর! এই করতে golfed যাবে 107 বাইট মধ্যে R+pryrবা 107 বাইট বেস আর মধ্যে
: Giuseppe

2

জাপট, 9 বাইট

অক্ষর অ্যারের একটি অ্যারে হিসাবে ইনপুট নেয়, অক্ষরের অ্যারে প্রদান করে বা undefined

y æ_f eZâ

এটি ব্যবহার করে দেখুন ( qR mqআপনাকে অ্যারে তৈরির ঝামেলা বাঁচাতে নতুন লাইনের বিচ্ছিন্ন স্ট্রিং হিসাবে ইনপুট নেওয়ার কোড সহ প্রোগ্রামের শুরুতে একটি নতুন লাইন যুক্ত করুন))


ব্যাখ্যা

y             :Transpose
  æ_          :Pass each array Z through a function and return the first that returns true
    f         :  Filter nulls (used for padding when transposing)
      e       :  Test for equality with
       Zâ     :  Z deduplicated

আপনার সমাধানটি পড়ার আগে আমি চ্যালেঞ্জটি চেষ্টা করেছিলাম এবং প্রায় অভিন্ন সমাধান পেয়েছি:z æ_¬eZ¬â
নিত

হুবহু অভিন্ন, ইনপুট ফর্ম্যাট ছাড়া অন্য।
শেগি


1

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

def f(t):c=[s.pop(0)for s in t];return all(t)and(f(t),c)[len(t)==len({*c})]

স্ট্রিংয়ের পরিবর্তে অক্ষর তালিকাগুলিতে কাজ করে। কোনও বৈধ এনক্লেশন স্ট্রিং উপস্থিত না থাকলে মিথ্যা প্রত্যাবর্তন করে।

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


আমি মনে করি এটি পুনরাবৃত্তি করে, যা f=বাইট গণনায় অন্তর্ভুক্ত না করা হলে এটি অকার্যকর করে তুলবে ।
লিরিক

@LyricLy ফিক্সড :)
musicman523

1

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

f(s,i)char**s;{char**t,a[255],*u=a;for(i=0;memset(a,0,255),u&&~i;i+=!!~i&&u)for(t=s;(u=u?*t++:0)&&~(i=u[i]?i:-1)&&!a[u[i]]++;);while(~i&&(u=*s++))putchar(u[i]);}

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

প্রতিটি চরিত্রের অবস্থানটি সদৃশতার জন্য পরীক্ষা করা হয় এবং যদি একটি সদৃশ সনাক্ত হয়; সংক্ষিপ্ততম স্ট্রিং শেষ না হওয়া অবধি এটি অব্যাহত থাকবে। এটি কেবলমাত্র ASCII, দুঃখের বিষয়: ডিবিসিএস / ইউটিএফ -8 স্ট্রিংগুলি এই ফাংশনটিকে খারাপভাবে ভেঙে দেয়!



1

জাপট , 12 বাইট

undefinedনন-এনক্ল্যাকটিক স্ট্রিংয়ের জন্য ফেরত দেয় ।

y ·æ_¬n ä¦ e

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

ব্যাখ্যা:

y ·æ_¬n ä¦ e
y             // Split the input at newlines and transpose
  ·           // Join on newlines 
   æ_         // Return the first item that returns truthy when ran through:
     ¬n       //   Sort
        ä¦    //   Reduce with !=
           e  //   All items are truthy (unique)

অক্ষরের অ্যারের অ্যারে হিসাবে ইনপুট নিয়ে এবং দুটি splitগুলি খনন করে আপনার 2 বাইট সংরক্ষণ করতে সক্ষম হওয়া উচিত ।
শেগি

1

ওল্ফ্রাম ভাষা (গণিত) , 54 বাইট by

#&@@Select[PadRight@#,#~FreeQ~0&&Union@#==Sort@#&]&

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

ইনপুট হিসাবে অক্ষরের তালিকার একটি তালিকা নেয়, অক্ষরের একটি তালিকা প্রদান করে। "ট্রান্সপোজ" অপারেটরের সাথে সম্পর্কিত, ইউ + এফ 3 সি 7 রয়েছে।

#1যখন উপযুক্ত স্ট্রিং থাকে না তখন ফিরে আসে এবং একগুচ্ছ অজানা ত্রুটি ছুঁড়ে দেয়।

ব্যাখ্যা:

PadRight@#

ইনপুটটি এমনভাবে প্যাড করুন যাতে প্রতিটি "স্ট্রিং" (অক্ষরের তালিকা) একই দৈর্ঘ্য হয়। এটি পূর্ণসংখ্যা 0গুলি (স্ট্রিং নয় "0") সংযুক্ত করে। তারপরে ট্রান্সপোজ করুন।

Select[ ... ,#~FreeQ~0&&Union@#==Sort@#&]

যে স্ট্রিংগুলির কোনও পূর্ণসংখ্যা নেই 0এবং সমস্ত অনন্য অক্ষর রয়েছে তা নির্বাচন করুন।

#&@@

প্রথমটি পান।


1

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

হয় স্ট্রিং প্রদান করে বা undefinedযদি কোনও সমাধান না থাকে।

f=(a,i=0)=>a.every(s=>(o[k+=c=s[i],c]^=1)&&c,o=k=[])?k:c&&f(a,i+1)

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

মন্তব্য

f = (           // f = recursive function taking:
  a,            //   a[] = input array
  i = 0         //   i   = pointer
) =>            //
  a.every(s =>  // for each string s in a[]:
    (o[k +=     //   append to the key string k
      c = s[i], //   the character c at position i in s
      c] ^= 1   //   and toggle o[c] (undefined -> 1 -> 0)
    ) && c,     //   additionally, make sure that c is defined
    o = k = []  //   start with o = k = empty array
  ) ?           // every() is true if all characters were distinct and defined:
    k           //   in which case we return k
  :             // else:
    c &&        //   provided that every() didn't fail because of an undefined character,
    f(a, i + 1) //   try again at the next position

1

কাঠকয়লা , 23 21 বাইট

-২ বাইট @ নীলকে ধন্যবাদ !

§ΦE⌊EθLι⭆θ§λι⬤ι⁼¹№ιλ⁰

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


হু, qক কখন) স্ট্রিংম্যাপ অ-স্ট্রিংয়ের কাজ শুরু করে? যাইহোক, আপনার Rangeঅপ্রয়োজনীয়, আপনাকে 2 বাইট সংরক্ষণ করছে।
নিল

@ নীল ক) আমি যখন অ্যারে যুক্ত করেছি / অবজেক্ট ইনপুট খ)> _> আমি নিশ্চিত নই। সম্ভবত আমি যখন লুপটি ঠিক করেছিলাম তখন প্রায় (দুঃখিত, এর মধ্যে একটির কথা উল্লেখ করতে ভুলে গেছি)
এএসসিআইআই-

1

কাস্তে , 9 বাইট

ḟS=UḞz:∞ø

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

ব্যাখ্যা

fS=UḞz:∞ø
    Ḟz:∞ø  Transpose the input dropping characters of longer strings
    Ḟ        Fold right
     z:      Zip with prepend
       ∞ø    Infinite list of empty lists
ḟS=U       Find the first string without duplicates, returns an empty string if none
ḟ            Return first value satisfying predicate
  =          Equal
 S U         to itself with duplicates removed

←ġLTওভার ব্যবহার করে Ḟz:∞øএকটি বাইট সংরক্ষণ করা উচিত।
4

1

রেটিনা , 81 56 বাইট

m`$
$.=*£¢
N$`.
$.%`
¶

~`(.*?¢)+
L`.{$#1}
A`(.).*\1|£|¢

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

-২২ বাইট @ নীলকে ধন্যবাদ


রেটিনাতে আয়তক্ষেত্রাকার পাঠ্য স্থানান্তর করা আশ্চর্যরকমভাবে কঠিন।


আমি আশা করি আমি আয়তক্ষেত্রের স্থানান্তর সম্পাদনের আরও ভাল উপায়টি জানতাম তবে গড় সময়ে 25 বাইট সংরক্ষণ করুন
নিল

@ নীল আহ্ ... এভাল স্টেজ আমি সবসময়ই ভুলে যাই রেটিনা 1.0 এ এই সমস্ত দুর্দান্ত নতুন বৈশিষ্ট্য রয়েছে
টুইনাইট

1

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

{([Z] $_).first:{.Set==$_}}

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

রুবি সংস্করণটি উত্সাহিত হয়েছে তা দেখার পরে, আমি স্ট্রিংয়ের পরিবর্তে পদ্ধতির অনুলিপি এবং অক্ষর তালিকা ব্যবহার করেছি। আমি এটা পছন্দ করি না।

আমার পুরানো এবং আরও সঠিক জমাটি নীচের মত:

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

বিভক্ত করুন, জিপ করুন, স্বতন্ত্রতা পরীক্ষা করুন, যোগদান করুন।

{[~] ([Z] @_>>.comb).first:{.Set==$_}}

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


1

সি (জিসিসি) , 121 113 110 বাইট

i;d;f(s)char**s;{char**_=s,x[255]={0},y[99]={0};for(d=i=0;*_;)d+=x[y[i++]=*(*_++)++]++;d=d?*x?0:f(s):puts(y);}

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

Ungolfed

void enklactify(char *strings[]) {
    int quit = 0;
    while (!quit) {
        char **arg = strings;      // current row
        int exists[255] = {0};     // which characters exist in the column
        char output[99] = {0};     // will hold output string
        int index = 0;             // where to insert in output
        int duplicates = 0;        // have we found any duplicates?
        while (*arg != NULL) {
            char *word = *arg;     // current word
            char first = *word;    // first letter of current word
            if (exists[first])
                duplicates = 1;    // we found a duplicate
            exists[first] = 1;     // mark it as in our string
            output[index] = first; // add it to our output
            index++;
            (*arg)++;              // advances the current word to the next
                                   // character by reference (chops first char)
            arg++;                 // advance to next whole argument
        }

        if (!duplicates) {         // This is a valid solution
            puts(output);
            quit = 1;
        }

        if (exists[0]) {           // We hit the null terminator of one of the
                                   // input strings, so we failed
            quit = 1;
        }
    }
}

-3 সিলিংক্যাট ধন্যবাদ

এটি স্ট্রিংয়ের 'লেজ' পেতে কেবলমাত্র একটি স্ট্রিং পয়েন্টারে 1 যুক্ত করার ক্ষমতাটিকে লঙ্ঘন করে। প্রধান বাইট সেভারগুলি হ'ল:

  • d+=x[y[i++]=*(*_)++]++যার প্রথম স্ট্রিং প্রথম অক্ষরটি appends _করতে y, এগিয়ে প্রথম স্ট্রিং _তার প্রথম অক্ষর মুছে ফেলার জন্য, যোগ করে xযে চরিত্র এ এন্ট্রি d, এবং বাড়তি বলেন xএন্ট্রি
  • q=d?*x:puts(y)যা কপি করে প্রিন্ট yযদি dহয় নন-জিরো করার সময় qএকটি অ শূন্য মান, বা সেট qকরতে নন-জিরো যদি প্রথম উপাদান xঅ শূন্য হয় (যদি আমরা স্ট্রিং এক শেষে ছিল তারপর তিনি বলেন উপাদান অ হবে শূন্য)

সম্পাদনা করুন: লুপ থেকে স্যুইচ করে টেল কলটি পুনরুদ্ধার করে এবং লুপের জন্য বন্ধনীগুলি সরিয়ে শেভ বাইটস।


এর for(d=i=0;*_;)পরিবর্তে for(d=0,i=0;*_;++_)এবং এর *(*_++)++]++;d=d?!*x*f(s)পরিবর্তে*(*_)++]++;d=d?*x?0:f(s)
সিলিংক্যাট

0

পাইথ, 13 বাইট

e+kf{IT@.TQ.t

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

e+kf{IT@.TQ.t
           .tQ   Transpose the (implicit) input with padding.
        .TQ      Transpose the input without padding.
       @         Take the strings in both.
   f{IT          Find the ones that have no duplicates.
e+k              Get the last, or an empty string.

1
দেখে মনে হচ্ছে যে সমস্ত বৈধ স্ট্রিংয়ের একটি তালিকা ফেরত দেওয়া বৈধ নয়।
লিরিক

@ লিরিকলাই ফিক্সড
মনমোনিক

0

লাল , 139 বাইট

func[b][m: length? first b foreach a b[m: min m length? a]repeat n m[c: copy[]foreach a b[append c a/(n)]if c = unique c[return rejoin c]]]

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

ব্যাখ্যা:

স্ট্রিংগুলির ব্লক (তালিকা) হিসাবে ইনপুট নেয় akes এনক্লেশন স্ট্রিং বা noneঅন্যথায় ফেরত দেয় ।

f: func[b][
    m: length? first b                   ; the minimal length of the first string  
    foreach a b[m: min m length? a]      ; find the minimal length of all strings
    repeat n m[                          ; limit the search to the minimal length
        c: copy[]                        ; an empty block  
        foreach a b[append c a/(n)]      ; for each string append the current char
        if c = unique c[return rejoin c] ; if all chars are unique, return the block
    ]  
]

0

রডা , 80 77 বাইট

f a{a|seq 0,#_|try{{|i|a|[_[i:i+1]]|orderedUniq|concat|[_]if[#_1=#a]}_|head}}

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

-1 বাইট ধন্যবাদ গরুর কোয়েস্টকে

ব্যাখ্যা:

f a{
  a|         /* Push the strings in a to the stream */
             /* For each string (_): */
  seq 0,#_|     /* Push a range from 0 to the length of _ to the stream */
  try{       /* Ignore errors during the following block */
    {|i|        /* For each i in the stream: */
      a|           /* Push strings in a to the stream */
      [_[i:i+1]]|  /* For each string, push the ith character to the stream */
      orderedUniq| /* Remove duplicate characters */
      concat|      /* Join the characters into a string */
      [_]if        /* Push the string to the stream if */
      [#_1=#a]     /* Its length is the length of a */
    }_|
    head        /* Take the first string in the stream and return it */
  }
}

tryশব্দ ত্রুটি ঘটতে যদি খারিজ করতে ব্যবহার করা হয় iক্ষুদ্রতম স্ট্রিং এর দৈর্ঘ্য চেয়ে বড় a, বা কোন উত্তর নেই এবং headএকটি ত্রুটি ঘটায়।


আপনি seqবাইট সংরক্ষণ করতে
পেরেনগুলি

ধন্যবাদ!
ফার্গুসক

0

জাভা 10, 106 বাইট

a->{for(int i=0;;i++){var r="";for(var s:a)r+=s[i];if(r.length()==r.chars().distinct().count())return r;}}

কোনও সমাধান না পাওয়া গেলে খালি স্ট্রিংয়ের পরিবর্তে একটি ত্রুটি দেবে। ইনপুট একটি চরিত্র-ম্যাট্রিক্স।

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

ব্যাখ্যা:

a->{                  // Method with character-matrix parameter and String return-type
  for(int i=0;;i++){  //  Loop `i` upwards
    var r="";         //   Result-String, starting empty
    for(var s:a)      //   Loop over the character-arrays of the input
      r+=s[i];        //    And append every `i`'th character to `r`
    if(r.length()==r.chars().distinct().count())
                      //   If `r` only contains unique characters
      return r;}}     //    Return `r` as result

ওপি ত্রুটিগুলি মঞ্জুর করতে চায় বলে মনে হয় না, যদিও স্বীকার করে এটিকে কখনও পোস্টে রাখেনি।
janrjan জোহানসেন

0

Clojure, 59 বাইট

#(for[s(apply map list %):when(=(count(set s))(count %))]s)

অক্ষরের তালিকার একটি তালিকা ফেরত দেয়।


0

এপিএল + উইন, 35 33 বাইট

অ্যাডমকে ধন্যবাদ 2 বাইট সংরক্ষণ করা

একটি অক্ষর ম্যাট্রিক্স হিসাবে পাঠ্য রেখার জন্য অনুরোধ:

⊃((↑⍴¨a)=+/¨((a⍳¨a)=⍳¨⍴¨a))/a←,⌿⎕

এটি অনলাইন চেষ্টা করুন! সৌজন্যে ডায়ালগ ক্লাসিক

ব্যাখ্যা:

a←,⌿⎕ prompts for input and creates a nested vector of the input matrix columns

((a⍳¨a)=⍳¨⍴¨a) creates a binary vector for each nested element with a 1 for each unique element

((↑⍴¨a)=+/¨ sums each binary vector and compares to number of characters in each element

(...)/a←⊂[1]⎕ selects only those elements where number of uniques = column length

⊃ converts nested vector back to a matrix of each valid enklaction string 

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