শব্দগুলিকে অন্য শব্দের মধ্যে বিভক্ত করুন (উদাঃ, “আফগল” = “আফট” + “এর্গ” + “কম”)


13

এখানে আপনার সমস্ত কথার জন্য এখানে একটি! এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা শব্দের একটি তালিকা নেয় এবং প্রতিটি শব্দের জন্য সমস্ত সম্ভাব্য কনটেনটেটিভ পচনগুলির একটি তালিকা তৈরি করে। উদাহরণ স্বরূপ:

(দ্রষ্টব্য: এটি উদাহরণস্বরূপ উদ্দেশ্যে কেবল একটি ছোট নমুনা Act প্রকৃত আউটপুট অনেক বেশি পরিমাণে বিশাল umin)

afterglow = after + glow
afterglow = aft + erg + low
alienation = a + lie + nation
alienation = a + lien + at + i + on
alienation = a + lien + at + ion
alienation = alien + at + i + on
alienation = alien + at + ion
archer = arc + her
assassinate = ass + as + sin + ate
assassinate = ass + ass + in + ate
assassinate = assassin + ate
backpedalled = back + pedal + led
backpedalled = back + pedalled
backpedalled = backpedal + led
goatskin = go + at + skin
goatskin = goat + skin
goatskin = goats + kin
hospitable = ho + spit + able
temporally = tempo + rally
windowed = win + do + wed
windowed = wind + owed
weatherproof = we + at + her + pro + of
yeasty = ye + a + sty

ঠিক আছে, আপনি ধারণা পাবেন। :-)

বিধি

  • আপনার পছন্দের যেকোন প্রোগ্রামিং ভাষা ব্যবহার করুন। প্রতিটি ভাষার জয়ের জন্য অক্ষর গণনার দ্বারা সংক্ষিপ্ততম কোড । এর অর্থ প্রতিটি ভাষার জন্য একটি করে বিজয়ী রয়েছে। সামগ্রিক বিজয়ী সমস্ত জমা দেওয়া সংক্ষিপ্ত কোড হবে।
  • ইনপুট তালিকাটি কোনও পাঠ্য ফাইল, স্ট্যান্ডার্ড ইনপুট বা আপনার ভাষা সরবরাহ করে এমন কোনও তালিকা কাঠামো (তালিকা, অ্যারে, অভিধান, সেট ইত্যাদি) হতে পারে। শব্দগুলি ইংরেজি বা অন্য কোনও প্রাকৃতিক ভাষা হতে পারে। (যদি তালিকাটি ইংরেজী শব্দ হয় তবে আপনি "এ" এবং "আই" ব্যতীত একক-বর্ণের আইটেমগুলিকে অগ্রাহ্য করতে বা প্রাক-ফিল্টার-আউট করতে চাইবেন Similarly একইভাবে, অন্যান্য ভাষার জন্যও, আপনি যদি অযৌক্তিক আইটেমগুলিকে অগ্রাহ্য করতে চান তবে ফাইল হাজির।)
  • আউটপুট তালিকাটি কোনও পাঠ্য ফাইল, স্ট্যান্ডার্ড আউটপুট বা আপনার ভাষা ব্যবহার করে এমন কোনও তালিকা কাঠামো হতে পারে।
  • আপনি নিজের পছন্দ মতো যে কোনও ইনপুট অভিধান ব্যবহার করতে পারেন তবে আপনি সম্ভবত এমন একটি শব্দ ব্যবহার করতে চাইবেন যা একটি প্রচুর অস্পষ্ট, তীরচিহ্ন বা অবর্ণনীয় শব্দ সরবরাহ করে না than এই ফাইলটি আমি ব্যবহার করেছি: 58000 টিরও বেশি ইংরেজি শব্দের কর্নকোব তালিকা

প্রশ্নাবলি

এই চ্যালেঞ্জটি মূলত টাস্কটি সম্পাদন করার জন্য কোডটি লেখার বিষয়ে , তবে ফলাফলগুলির মাধ্যমে ঝুঁটি করাও মজাদার ...

  1. কোন সাবওয়ার্ডস সাধারণত দেখা যায়?
  2. সাবওয়ার্ডের বৃহত্তম সংখ্যায় কোন শব্দটি দ্রবীভূত হতে পারে?
  3. কোন শব্দটি সবচেয়ে বিভিন্ন উপায়ে পচে যেতে পারে?
  4. বৃহত্তম সাবওয়ার্ডগুলি নিয়ে কোন শব্দটি গঠিত?
  5. আপনি যে পচনগুলি সবচেয়ে চিত্তাকর্ষক বলে মনে করেছিলেন?

@ জিওবিটস - আহ, আপনাকে ধন্যবাদ! আমি alienationযখন এটি কেটে পেস্ট করেছি তখন এর দুটি পচনের বিষয়টি আমি মিস করেছি। এখনই স্থির। অন্যদের শর্তে, উপরের তালিকাটি কেবলমাত্র একটি ছোট নমুনা is আমার পরীক্ষা প্রোগ্রামটি কর্নকোব তালিকা দেওয়া হলে কয়েক হাজার উত্তর জেনারেট করে।
টড লেহম্যান

1
"কোন সাবওয়ার্ডগুলি সাধারণত দেখা যায়?" সেখানে একটি বুনো অনুমান ছুড়ে ফেলবে এবং বলবে যে 'এ' সম্ভবত শীর্ষের কাছাকাছি হতে পারে।
সেলিম

@ সেবাস্তিয়ানালামারিচস - আমি জানি না ... হতে পারে, হতে পারে না। :)
টড লেহম্যান

@ টডলেহম্যান সেই বাক্যে ঠিক 0 টি সাবওয়ার্ড রয়েছে, তাই 'এ' এখনও প্রথম সমান: পি
সেলিমিমে

@ সেবাস্তিয়ান ল্যামারিকস আপনি যদি টডের প্রতিক্রিয়াটির বিষয়ে উল্লেখ করছেন তবে "ডুনো" "ডান" + "না" তে বিভক্ত হতে পারে। ;)
আমি এলিয়েন

উত্তর:


3

পাইথন 186

a=open(raw_input()).read().split()
def W(r):
 if r:
    for i in range(1,len(r)+1):
     if r[:i]in a:
        for w in W(r[i:]):yield[r[:i]]+w
 else:yield[]
while 1:
 for f in W(raw_input()):print f

বিশেষভাবে দক্ষ নয় তবে আসলে ভয়ানক ধীর নয়। এটি কেবল নির্লজ্জভাবে (আমি মনে করি এটি সম্ভব), যদিও আমি অজগরটি কিছু চতুর অপ্টিমাইজেশন করতে পারে বলে অসম্ভব বলে মনে করি) সাব-শব্দগুলি কর্নকোব অভিধানে রয়েছে এবং পুনরাবৃত্তভাবে এটি যতগুলি শব্দ পেতে পারে তা খুঁজে পায়। অবশ্যই এই অভিধানটি বেশ বিস্তৃত এবং আপনি এমন একটি চেষ্টা করতে পারেন যার মধ্যে বিভিন্ন সংক্ষিপ্ত বিবরণ এবং সংক্ষিপ্ত শব্দগুলি অন্তর্ভুক্ত নেই (যেমন বিষয়গুলির দিকে পরিচালিত করে bedridden: be dr id den)। এছাড়াও লিঙ্কযুক্ত অভিধানে 'এ' বা 'আমি' শব্দের তালিকাভুক্ত নয় বলে আমি ম্যানুয়ালি এগুলিতে যুক্ত করেছি in

সম্পাদনা:

এখন প্রথম ইনপুটটি হ'ল অভিধানের ফাইল নামটি ব্যবহার করা এবং প্রতিটি অতিরিক্ত একটি শব্দ।


এটি বলা উচিত যে এটি পাইথন 2, কারণ কোডটি পাইথন 3 তে চলবে না কারণ এটি print fহওয়া উচিতprint(f)

এছাড়াও, আমি কীভাবে এটি চালাব? echo archer|python2 filename.pyশেষ লাইনের জন্য একটি EOFError আউটপুট

কিছু জিনিস আপনি এখনও পরিবর্তন করতে পারেন (আমি এগুলি পরীক্ষা করি নি, তবে আমি নিশ্চিত যে এটি কার্যকর হবে): for f in W(raw_input()):print f=> ''.join(W(raw_input()); a=open('c').read().split('\n')=>a=open('c').readlines()
Sepuʎs

@ .uʎs আপনার প্রথমটি কাজ করবে তবে readlinesলাইনের শেষে নিউলাইন চরিত্রগুলি রাখে যার কারণে আমি এটি করার মতো করেছিলাম।
কেএসব

@ Ohউস ওহ আসলে এটি joinসমস্ত উপাদানগুলির স্ট্রিং হওয়া প্রয়োজন এবং আমি ইতিমধ্যে যা আছে তার চেয়ে ছোট আকারে এটি পেতে পারি না।
কেএসব

2

কোবরা - 160

sig Z(x,y)
def f(b)
    c as Z=do(x,y)
        if x.length<1,print y
        for z in File.readLines('t'),if z==x[:e=z.length].toLower,c(x[e:],y+' '+z)
    for t in b,c(t,'[t]:')

এটি একটি ফাংশন (সাজানোর ধরণের দুটি ফাংশন) যা একটি List<of String>* নেয় এবং আর্গুমেন্ট তালিকার প্রতিটি স্ট্রিংয়ের জন্য সম্ভাব্য সাব-ওয়ার্ড ব্যবস্থা সহ স্ট্রিংগুলি মুদ্রণ করে।

* টাইপটি আসলে List<of dynamic?>, তবে অন্য কিছু সরবরাহ করা List<of String>সম্ভবত এটি ভেঙে দেবে।


2

স্কালা, 132 129

সম্পাদনা: ফাংশনের চেয়ে স্টিডিনের লুপ রিডিং হিসাবে সামান্য খাটো sh

while(true)print(readLine.:\(Seq(List(""))){(c,l)=>l.flatMap{m=>Seq(c+""::m,c+m.head::m.tail)}}filter(_.forall(args contains _)))

হিসাবে চালান

scala decompose.scala aft after erg glow low

(বা একটি দীর্ঘ শব্দের তালিকা ব্যবহার করুন :))

মূল:

def f(s:Seq[String])=s.map{_.:\(Seq(List(""))){(c,l)=>l.flatMap{m=>Seq(c+""::m,c+m.head::m.tail)}}filter(_.forall(args contains _))}

সেক [স্ট্রিং] থেকে সেক [সেক [তালিকা [স্ট্রিং]]] পর্যন্ত ফাংশন। কমান্ড লাইন আর্গুমেন্ট হিসাবে অভিধান গ্রহণ করে।

Ungolfed:

def decompose(wordList: Seq[String]) =
  wordList.map{ word =>                              // for each word
    word.foldRight(Seq(List(""))){ (char, accum) =>  // for each character
      accum.flatMap{list =>
        Seq(char+""::list,char+list.head::list.tail) // add it as both a new list and 
      }                                              // the to start of the first list
    }.filter(_.forall(args contains _))              // filter out lists w/ invalid words
  }

পদ্ধতির সাবস্ট্রিংগুলির সম্ভাব্য সমস্ত তালিকা তৈরি করা এবং অভিধানে নেই এমন স্ট্রিং রয়েছে এমনগুলি ফিল্টার করে দেওয়া filter নোট করুন যে উত্পন্ন কিছু সাবস্ট্রিংগুলিতে অতিরিক্ত খালি স্ট্রিং রয়েছে, আমি ধরে নিয়েছি খালি স্ট্রিং অভিধানে থাকবে না (যেভাবেই কমান্ড লাইনে এটি পাস করার কোনও উপায় নেই)।

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