আমার পলিফ্যাংগুলি সন্ধান করুন!


19

এই চ্যালেঞ্জের উদ্দেশ্যে, একটি পলিফথং একটি স্ট্রিংয়ের সংলগ্ন টুকরো হিসাবে সংজ্ঞায়িত করা হয়েছে, এতে কেবল স্বর রয়েছে এবং এর দৈর্ঘ্য কমপক্ষে ২। ইনপুট হিসাবে একটি খালি-খালি স্ট্রিং দেওয়া আপনার কাজ হ'ল এতে থাকা সমস্ত পলিপথংগুলিকে আউটপুট করা ।

উদাহরণস্বরূপ, "abeoic"নিম্নলিখিত স্বতন্ত্র টুকরা রয়েছে (স্থান-বিচ্ছিন্ন):

a b e o i c ab be eo oi ic abe beo eoi oic abeo beoi eoic abeoi beoic abeoic

স্বর ছাড়া অন্য যে কোনও কিছু রয়েছে বা তাদের দৈর্ঘ্য 2 এর চেয়ে কম রয়েছে সেগুলি সরিয়ে আমরা আমাদের পছন্দসই পলিফথংগুলি পাই:

eo oi eoi

আপনার সাবমিশনগুলি নিম্নলিখিত বিধিগুলি মেনে চলতে হবে:

  • আপনি I / O এর জন্য ছোট হাতের বা বড় হাতের বাছাই করতে পারেন তবে আউটপুট কেস অবশ্যই ইনপুট কেসের সাথে মেলে।

  • স্বরগুলি হ'ল aeiou(ছোট হাতের জন্য) এবং AEIOU(বড় হাতের জন্য)। y/ Yস্বর হিসাবে বিবেচনা করা হয় না।

  • ইনপুটটিতে কেবল প্রিন্টযোগ্য এএসসিআইআই থাকবে।

  • যদি পলিফথং একাধিকবার উপস্থিত হয়, আপনি কেবল একবার এটি আউটপুট বা তার সমস্ত উপস্থিতি আউটপুট চয়ন করতে পারেন।

  • যে কোনও যুক্তিসঙ্গত I / O ফর্ম্যাট এবং পদ্ধতি অনুমোদিত (অক্ষরের তালিকাগুলিও ভাল, ইনপুট এবং আউটপুট উভয়ের জন্য)।

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

ইনপুট -> আউটপুট (ছোট হাতের)

r67) () * 6536782! 87 -> []
প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ -> []
আমি ... জিতেছি! -> ['আ', 'আ', 'আ']
অ্যাবেইক -> ['ইও', 'ওআই', 'ইওই']
yah eioo ala -> ['ei', 'io', 'oo', 'eio', 'ioo', 'eioo']
@Yabeeeayio__e -> ['ইইই', 'ইই', 'ইয়া', 'আইও', 'আইই', 'ইই', 'আইইএ']
0ioen0aaiosnjksd -> ['আইও', 'ওয়ে', 'আ', 'আইআই', 'আইও', 'আইও', 'আইই', 'আইও', 'আইও']

নোট করুন যে পরীক্ষার ক্ষেত্রে 3 এবং 6, আপনি আউটপুট করতে পারেন 'aa'এবং 'ee'যথাক্রমে একবার (চতুর্থ নিয়ম দেখুন)।

এটি , প্রতিটি ভাষার মধ্যে বাইটের মধ্যে সংক্ষিপ্ততম জমা!


নোট করুন যে এটি মূলত Nineনবিংশ বাইটে সিএমসি (চ্যাট মিনি চ্যালেঞ্জ) হিসাবে পোস্ট করা হয়েছিল , তবে অ্যাডাম বলেছিলেন যে এটি মেইনের পক্ষে উপযুক্ত , তাই আমি এই পোস্টটি শেষ করেছি।
মিঃ এক্সকোডার

আমি আপনার তৃতীয় পরীক্ষার কেস, 'aa'দু'বার উপস্থিত। একাধিকবার একই স্ট্রিংটি আউটপুট দিতে হয় যদি এটি বিভিন্ন স্থানে উপস্থিত হয় বা কেবলমাত্র একমাত্র অনন্য পলিফটংগুলি আউটপুট করতে পারে?
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ ঠিক আছে, আমার ধারণা অনন্য পলিফটংগুলি আউটপুট করা ভাল। সম্পাদনা করবে।
মিঃ এক্সকোডার 14

আউটপুট ক্রম কি ব্যাপার?
ovs

1
@Xophmeister এই চ্যালেঞ্জের উদ্দেশ্যে , একটি পলিফথং হিসাবে সংজ্ঞায়িত করা হয়েছে - আমি জানি যে এটি সঠিক ভাষাগত সংজ্ঞা নয় :-)
মিঃ এক্সকডার

উত্তর:


7

পাইথন 2 , 102 97 বাইট

-জোনথানফ্রেচকে -৫ বাইটের জন্য ধন্যবাদ

w=input();l=range(len(w)+1)
print{w[a:b]for a in l for b in l if b-a>1<set(w[a:b])<=set('aeiou')}

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

লোয়ারকেস I / O


1
আমি মনে করি আপনার দরকার নেই ...AEIOU', যেহেতু আপনাকে কেবল ইনপুট হিসাবে ছোট হাতের অক্ষর নেওয়ার অনুমতি দেওয়া হয়।
জোনাথন ফ্রেচ


@JonathanFrech print([w[a:b]for a in l for b in l[a+2:]if{*w[a:b]}<={*'aeiou'}])93. জন্য কাজ করে
লিন

@ লিন এবং আপনার সমাধান 96 পাইথন 2 বাইট তৈরি করে ।
জোনাথন ফ্রেচ

6

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

লোয়ারকেসে ইনপুট আশা করে। পুনরাবৃত্তি না করে অনন্য পলিফথংগুলিকে আউটপুট দেয়।

w=>(r=[],g=s=>w.match(s)&&[...'aeiou'].map(c=>g(s+c),s[1]&&r.push(s)))``&&r

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

কিভাবে?

বর্তমান নোডটি আর ইনপুটটিতে উপস্থিত না থাকায় এবং কমপক্ষে 2 টি অক্ষরের সাথে সমস্ত মিলে যাওয়া নোডগুলি সংরক্ষণ করার সাথে সাথে আমরা সমস্ত সম্ভাব্য পলিফথংসের গাছটি পুনরুত্থিতভাবে তৈরি করি।

w => (                      // given the input w
  r = [],                   // r = array of results
  g = s =>                  // g = recursive function taking s
    w.match(s) &&           // if w contains s:
    [...'aeiou'].map(c =>   //   for each vowel c:
      g(s + c),             //     do a recursive call with s + c
      s[1] &&               //     if s is at least 2-character long:
      r.push(s)             //       push it into r
    )                       //   end of map()
)``                         // initial call to g() with s = ''
&& r                        // return r

6

রেটিনা , 23 20 বাইট

M!&`[aeiou]+
r!&`..+

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

এটি একটি পলিফথংয়ের সমস্ত ঘটনা মুদ্রণ করে।

ব্যাখ্যা

রেটিনার কাছে সমস্ত ওভারল্যাপিং ম্যাচ পাওয়ার একটি উপায় রয়েছে তবে এর প্রকৃত অর্থ হ'ল এটি প্রতিটি অবস্থান থেকে একটি করে ম্যাচ সন্ধান করবে। সুতরাং যদি একই অবস্থান থেকে একাধিক ম্যাচ হয় তবে এটি কেবল তাদের মধ্যে একটির প্রত্যাবর্তন করবে। সমস্ত ওভারল্যাপিং ম্যাচগুলির সত্যিকারের একমাত্র উপায় হ'ল এই বৈশিষ্ট্যটি দু'বার ব্যবহার করা, একবার বাম থেকে ডান এবং একবার ডান থেকে বামে মিলানো (যাতে আমরা প্রথম প্রতিটি সম্ভাব্য শুরুর অবস্থান থেকে দীর্ঘতম সম্ভাব্য ম্যাচ পাই এবং তারপরে আমরা সমস্ত ম্যাচও পাই সম্ভাব্য শেষ অবস্থানগুলি))

সুতরাং আসল প্রোগ্রাম:

M!&`[aeiou]+

স্বরযুক্ত সমস্ত ওভারল্যাপিং রান পান। এর সত্যিকারের অর্থ হ'ল সমস্ত স্বরবর্ণের সমস্ত প্রত্যয় পাওয়া।

r!&`..+

ডান থেকে বামে মিলিয়ে কমপক্ষে দৈর্ঘ্যের 2 টি সমস্ত উপসর্গ পান। Mএখানে অন্তর্নিহিত কারণ এটি প্রোগ্রামের চূড়ান্ত লাইন।


আপনি কোড ব্যাখ্যা করতে পারেন?
অ্যাডম

!&`[aeiou]{2,}এটি সংশোধন করার জন্য খুব কাছাকাছি , লোভী হওয়ার কোনও উপায় কি এর সাথে মেলে io?
অ্যাডমবর্কবার্ক

1
@ অ্যাডম একটি ব্যাখ্যা যুক্ত করেছেন।
মার্টিন ইন্ডার

@ অ্যাডমবর্কবার্ক আমার ব্যাখ্যাগুলির ধরণের প্রচ্ছদটি কেন কাজ করতে পারে না। রেটিনা প্রকৃত রেজেক্স ইঞ্জিনের সাথে ঝাঁকুনি দেয় না, তাই &প্রতিটি অবস্থান থেকে কোনও মিলের জন্য চেষ্টা করা সর্বাধিক করতে পারে, যাতে আপনার একই অবস্থান থেকে বিভিন্ন দৈর্ঘ্যের একাধিক মিল থাকতে পারে না। এজন্য আমার দ্বিতীয় পর্বের দরকার।
মার্টিন ইন্ডার

সুন্দর ব্যাখ্যা, ধন্যবাদ।
অ্যাডমবর্কবার্ক

5

কোয়াডস , 20 + 1 = 21 বাইট

⊃,/⍵
[aeiou]+
1↓,\⍵M

সঙ্গে oপতাকা

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

ঘটছে ক্রম ক্রম:

[aeiou]+ এই পিসিআরআই এর প্রতিটি ম্যাচে

,\⍵M ম্যাচের উপসর্গ

1↓ প্রথমটি বাদ দিন (যার একটি স্বর রয়েছে)

,/⍵ উপসর্গগুলির সমস্ত তালিকা একত্রিত করুন

 প্রকাশ (কারণ হ্রাস /বিচ্ছিন্ন)


এটি ডায়ালগ এপিএল সারণী ফাংশনের সমতুল্য:

{⊃,/⍵}'[aeiou]+'S{1↓,\⍵.Match}⍠'OM'1

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



4

জাভা (ওপেনজেডিকে 8) , 138 135 134 বাইট

s->{String e,x="";for(int i=0,j,y=s.length();i<=y;i++)for(j=y;j>i;x+=e.matches("[aeiou]{2,}")?e+" ":"")e=s.substring(i,j--);return x;}

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


i<y-1পুরো স্ট্রিং হতে পারে i<=yএবং String#matchesঅন্তর্নিহিত পরীক্ষা করতে পারে , সুতরাং আপনার দরকার নেই ^ এবং $। যদিও আমাকে এতে মারধর করার জন্য +1 করুন। আমার নিজের 138 বাইট উত্তর পোস্ট করার কথা ছিল (তবে এই পরিবর্তনগুলির সাথে আমি আপনাকে প্রস্তাবিত করেছি যে আরও ছোট)। :)
কেভিন ক্রুইজসেন


3

জেলি , 9 বাইট

ẆḟÐḟØcḊÐf

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

ব্যাখ্যা

ẆḟÐḟØcḊÐf  Main Link
Ẇ          Get all (contiguous) sublists
  Ðḟ       Filter; remove all elements where the result is truthy:
 ḟ  Øc     Filter; remove all vowels; if it's truthy, then it contains non-vowels
       Ðf  Filter; keep elements where the result is truthy:
      Ḋ    Dequeue; return all but the first element (truthy if the length was at least 2)

-4 বাইটস মিঃ এক্সকোডারকে ধন্যবাদ


11 বাইট প্রতিস্থাপন L>1$$সঙ্গে L’$
মিঃ এক্সকোডার 14

আসলে আপনি প্রতিস্থাপন করতে পারেন L’$সঙ্গে জন্য 9 বাইট । সমতুল্য হবে ẆṫLḊḟÐḟØc
মিঃ এক্সকোডার

3

সি (জিসিসি) , 104 বাইট (কেবলমাত্র ছোট হাতের বা বড় হাতের সাথে 99 বাইট)

হ্যাঁ, এটা ফুটো - তাই কি?

#include<string.h>
a;f(char*s){*s&&f(s+1);for(a=strspn(s=strdup(s),"AEIOUaeiou");a>1;)s[a--]=0,puts(s);}

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


3
ছাড়া কাজ করার জন্য মনে হচ্ছে #include এবং আপনার কেবল একটি বর্ণের কেস হ্যান্ডেল করা দরকার, তাই আপনি এটি 80 বাইটে সংক্ষিপ্ত করতে পারেন।
স্টেডিবক্স


3

আর , 137 বাইট

আউটগল্ফড মার্ক দ্বারা !

function(S)(x=unlist(sapply((s=el(strsplit(S,"[^aeiou]")))[nchar(s)>1],function(x)substring(x,1:(n=nchar(x)),rep(n:1,e=n)))))[nchar(x)>1]

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

function(S){
 s <- el(strsplit(S,"[^aeiou]"))            # split on non-vowels
 s <- s[nchar(s)>1]                         # vowel groups of length at least 2
 p <- function(x){                          # generates all substrings of inputs
  n <- nchar(x)
  start <- 1:n
  stop <- rep(n:1, n)                       # this will generate dups
  substring(x, start, stop)
} q <- unlist(sapply(s, p)) # all substrings q <- q[nchar(q)>1] # all length-2 or more substrings }


আপনার দরকার নেই unique
মিঃ এক্সকোডার

"যে কোনও যুক্তিসঙ্গত I / O ফর্ম্যাট এবং পদ্ধতি অনুমোদিত (অক্ষরের তালিকাগুলিও ভাল, ইনপুট এবং আউটপুট উভয়েরই জন্য)।" আমি এটি চেষ্টা করে দেখিনি, তবে আমি সন্দেহ করি আপনি যদি শুরু থেকে চরিত্রের তালিকা ব্যবহার করেন তবে এটি যথেষ্ট সংক্ষিপ্ত হতে পারে।
ব্যবহারকারী 2390246

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


2

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

param($a)0..($b=$a.count-1)|%{($i=$_)..$b|%{-join$a[$i..$_]}}|?{$_-match'^[aeiou]{2,}$'}

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

ছোট হাতের বা বড় হাতের আই / ও (বা একটি মিশ্রণ) ব্যবহার করে।

সমস্ত সাবস্ট্রিংগুলি পাওয়ার জন্য বিস্ফোরিত সাবস্ট্রিংগুলিতে আমার উত্তর থেকে কোড ধারন করে , তারপরে যেগুলি রেজেক্সের -matchবিরুদ্ধে টান দেয় ^[aeiou]{2,}$- অর্থাত্ যেগুলি দৈর্ঘ্যে কমপক্ষে দুটি স্বর এবং কেবল স্বরযুক্ত those এই স্ট্রিংগুলি পাইপলাইনে রেখে গেছে এবং আউটপুট অন্তর্ভুক্ত।


2

হাস্কেল , 148 137 130 123 118 বাইট

-১১ বাইটের জন্য লাইকোনিকে ধন্যবাদ, আরও -7 বাইট আমাকে মোট গল্ফিং টিপসের দিকে ইশারা করে, আরও একটি -7 বাইট এবং আরও একটি -5 বাইট, মোট চূড়ান্তভাবে -30 বাইটের জন্য।

এটি হাস্কেলের পক্ষে বেশ উপযুক্ত বলে মনে হলেও ফলাফলটি রাজি বলে মনে হচ্ছে না। আমার ধারণা, হাস্কেল সর্বোপরি একটি পছন্দ ছিল। subsequencesযদিও এখনও কাজ করে আমি বিরক্ত হয়েছি ।

import Data.List
v=(`elem`"aeiou")
p s=nub$do x<-groupBy((.v).(&&).v)s;[y|y@(c:_:_)<-subsequences x,v c,y`isInfixOf`x]

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


1
হাস্কেল গল্ফিংয়ে আপনাকে স্বাগতম! আপনি আমাদের গল্ফিং টিপস সংগ্রহ করতে আগ্রহী , গল্ফিং নিয়মের গাইড এবং মনডস অ্যান্ড মেন , আমাদের হাস্কেল চ্যাট রুম।
লাইকনি

1
আপনার উত্তরের কয়েকটি নোট: নিউলাইনগুলিতে যেমন বাইট গণনা ;রয়েছে তবে কোডের পঠনযোগ্যতা বৃদ্ধি করুন। আপনি সর্বদা eসাথে একসাথে ব্যবহার করেন v, যাতে আপনি সরাসরি e=(এলেম ঘোষণা করতে পারেন "aeiou")y!!0তুলনায় খাটো head y। এর concatMapপরিবর্তে সেখানে রয়েছে concat.map, তবে (=<<)তালিকা থেকেও ছোটটি রয়েছে ম্যানাদ উইচের একই প্রভাব।
লাইকনি

1
আপনি এর Data.Listsপরিবর্তে আমদানি করতে পারেন Data.List। প্রাক্তনটির পরবর্তীকালের সমস্ত ক্রিয়াকলাপ রয়েছে তবে অতিরিক্ত স্টাফও রয়েছে powersliceযা সমস্ত ধারাবাহিক অনুচ্ছেদের একটি তালিকা দেয়।
নিমি

1
তালিকা অনুধাবনীতে, আপনি y@(h:_:_)ড্রপ length y>1এবং সংক্ষিপ্ত করতে মিলতে v(y!!0)পারেন v h
লাইকনি

1
আমার আস্তিনে আরও দুটি এসি রয়েছে: (1) (\x y->v x&&v y)পয়েন্ট-ফ্রি রূপান্তর করে ম্যানুয়ালি এই টিপটি ব্যবহার করে বা পয়েন্টফ্রি.আইও ব্যবহার করে সংক্ষিপ্ত করা যেতে পারে । (2) তালিকা মোনাড এছাড়াও doস্বরলিপি সঙ্গে ব্যবহার করা যেতে পারে , যে do x<-l;[...]একই l>>=(\x->[...])। বিটিডব্লিউ, টিআইওতে আপনি mainবাইট গণনাটি আসল জমা দেওয়ার সাথে শিরোনাম বা পাদচরণ ক্ষেত্রের মধ্যে রাখতে পারেন।
লাইকোনি

2

পার্ল, 45 বাইট

local $,=" ";print $_=~/(?=([AEIOU]{2,}))/ig;

পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম পোস্ট!
Rɪᴋᴇʀ

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

2

আর , 120 বাইট 110 বাইট

function(x){k=nchar(x);i=k:1;e=expand.grid(i,i[-1]);grep("^[aeiou]+$",mapply(substr,x,e[,2],e[,2]+e[,1]),v=T)}

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

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

function(x){                  #initalize the anonymous function where input is stored in x
  k=nchar(x)                  #set k to the number of characters in x
  i=k:1                       #create vector of integers from k to 1
  e=expand.grid(i,i[-1])      #create matrix of full outer join on i 
                              #except in the second column, limit i to being less than k
  grep("^[aeiou]+$",          #search for strings made of only vowels
       mapply(substr,         #map the substring function
              x,              #with x as the string to subset
              e[,2],          #start at the second column of the outer join
              e[,2]+e[,1]     #end at the sum of the sum of the first and second columns
       ),
       v=T                    #if a match is found, return it's value
  )
}                             #by default, R returns the last line of a function

১০৫ বাইটের চমৎকার দৃষ্টিভঙ্গি, আমি আমার সমাধানে একটি মন্তব্য যুক্ত করব যে এই বিষয়টি উল্লেখ করে যে আপনি আমাকে ছাড়িয়ে গেছেন :)
জিউসেপ

আমি সত্যবাদী হব, আমি খুব সন্তুষ্ট হয়েছি যে আমি আপনার একটি বিকল্প সমাধান নিয়ে আসতে পেরেছিলাম :) সাধারণত আপনি আমার থেকে ইতোমধ্যে হালকা বছর এগিয়ে আছেন বা টেবিলে রেখে যাওয়া সমস্ত কোড সন্ধান করছেন।
চিহ্নিত করুন


1

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

s=>eval('a=[];l=i=s.length;while(i--){j=l;while(j--)if(/^[aeiou]{2,}$/.test(t=s.slice(i,j)))a.push(t)}a')

সম্ভবত অনেক গল্ফিং বাকি আছে।

let f=
s=>eval('a=[];l=i=s.length;while(i--){j=l;while(j--)if(/^[aeiou]{2,}$/.test(t=s.slice(i,j)))a.push(t)}a')
console.log(JSON.stringify(f('r67^^()*6536782!87')))
console.log(JSON.stringify(f('programming puzzles and code golf')))
console.log(JSON.stringify(f('aaand... i won!')))
console.log(JSON.stringify(f('abeoic')))
console.log(JSON.stringify(f('yah eioo ala')))
console.log(JSON.stringify(f('@yabeeeayio__e')))
console.log(JSON.stringify(f('0ioen0aaiosnjksd')))



1

05 এ বি 1 ই , 10 বাইট

Œʒg≠}ʒžMм_

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

ব্যাখ্যা:

Œʒg≠}ʒžMм_  
Œ            Push all substrings (abeoic => a, b, e, ..., eoi, eoc, ... abeioc)
 ʒ  }        Filter elements for which result is 1
  g≠            Push 1 if length is != 1, 0 otherwise
     ʒ       Filter elements for which result is 1
      žMм       Remove all occurences of 'aeiou' from element
         _      Negative bool: push 1 if length == 0, 0 otherwise

চমৎকার উত্তর! আমার ছিলŒʒžMм_}ʒg≠
মিঃ এক্সকোডার

@ মিঃ এক্সকোডার ধন্যবাদ আমার কাছে ŒD1ùKʒžMм_10 বাইট ছিল আমি যদিও এটিকে গল্ফ করার কোনও উপায় খুঁজতে
চাইছি

1

সি, 105 75 বাইট

ছোট ইনপুটটিতে একটি পয়েন্টার গ্রহণ করা এবং স্ট্যান্ডার্ড আউটপুটে স্পেস-বিভাজিত স্ট্রিং উত্পাদন করা একটি ফাংশন:

i;f(char*p){for(i=strspn(p,"aeiou");i>1;)printf("%.*s ",i--,p);*p&&f(p+1);}

পরীক্ষা প্রোগ্রাম

#include <stdio.h>

int main(int argc, char **argv)
{
    for (int i = 1;  i < argc;  ++i) {
        char *in = argv[i];
        printf("'%s' -> [ ", in);
        f(in);
        puts("]");
    }
}

ডেমো

'r67^^()*6536782!87' -> [ ]
'programming puzzles and code golf' -> [ ]
'aaand... i won!' -> [ aaa aa aa ]
'abeoic' -> [ eoi eo oi ]
'yah eioo ala' -> [ eioo eio ei ioo io oo ]
'@yabeeeayio__e' -> [ eeea eee ee eea ee ea io ]
'0ioen0aaiosnjksd' -> [ ioe io oe aaio aai aa aio ai io ]

ব্যাখ্যা

#include <string.h>
#include <stdio.h>

void find_polyphthongs(char *p)
{
    /* from longest polyphthong substring down to 2 */
    for (int i = strspn(p,"aeiou");  i >= 2;  --i) {
        /* print exactly [p .. p+i] */
        printf("%.*s ", i, p);
    }

    /* tail-recurse to next char */
    if (*p) {
        find_polyphthongs(p+1);
    }
}

ডেবিয়ান লিনাক্স জিসিসি ব্যবহার করে, আমি বেমানান অন্তর্নিহিত ঘোষণা দিয়ে পার পেতে বলে মনে হচ্ছে strchr()এবং printf()। অন্যান্য প্ল্যাটফর্মগুলির প্রয়োজন হতে পারে <stdio.h>এবং<string.h> অন্তর্ভুক্ত হতে পারে।

এটি অনলাইনে চেষ্টা করুন (জাভাস্ক্রিপ্টের প্রয়োজন)।


হতে পারে f(p)char*p;না f(char*p)?
জোনাথন ফ্রেচ

বেশ অধিকার - আমি মূলত কলার-বরাদ্দ স্টোরেজ আউটপুট ছিল: f(s,d)char*s,*d
টবির স্পিড 18


1

এপিএল (ডায়ালগ) , 53 বাইট

এটি একটি Dfn( d প্রত্যক্ষ f অবধি এন )। ব্যবহার হয় p '<argument>'। যথাযথ সতর্কতা: input > 8 charactersটিআইওতে এটি খুব দক্ষ এবং সময়সাপেক্ষ নয়, তবে পর্যাপ্ত সময় দেওয়ার পরে সাধারণত কাজ করে।

p←{(G∊⊃,/⌽,\∘⌽¨,\⌽⍵)/G←⊃,/{(,v∘.,⊢)⍣⍵⊢v'aeiou'}¨⍳≢1↓⍵}

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

16 বাইটের জন্য @ অ্যাডমকে ধন্যবাদ!

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

আমরা যদি ছোট অংশে কোডটি ভাঙ্গি তবে এটি বোঝা সহজ:

  • পর্ব 1 - G←⊃,/{(,v∘.,⊢)⍣⍵⊢v←'aeiou'}¨⍳≢1↓⍵: ফাংশনের এই অংশটি (ডান) আর্গুমেন্টের দৈর্ঘ্য নেয় এবং ভেক্টরকে aeiouনিজের সাথে মিশ্রিত করে যা বহুবার [2, length(right arg)]স্বরগুলির প্রতিটি সম্ভাব্য সংমিশ্রণ দেয় ।
  • পার্ট 2 - (G∊⊃,/⌽,\∘⌽¨,\⌽⍵)/: এই অংশটি জি এর কোন উপাদান (গুলি) ইনপুটটির সাবস্ট্রিংয়ের সদস্য তা পরীক্ষা করে। এটি ইনপুটটিতে 1উপস্থিত স্বর সম্মিলনের সূচকগুলিতে এবং বুলিয়ান ভেক্টরকে ফেরত দেয় 0যেখানে তারা নেই। ফলস্বরূপ ভেক্টরটি ম্যাপ করা হয় ( /) Gপরে সত্যবাদী মানগুলির সাথে সংশ্লিষ্ট উপাদানগুলি ফেরত returning

পুরো বিষয়টি তখন নির্ধারিত হয় pp←বাইট গণনায় অন্তর্ভুক্ত নয় কারণ এটি প্রয়োজনীয় নয় , এটি কেবল ফাংশনটি ব্যবহার করা সহজ করে তোলে।


আরও গল্ফ। এছাড়াও, আপনি ফিল্টার ব্যবহার করা উচিত নয় । ব্যবহার /
Adám


1

রুবি 2.4, 100 বাইট

(2..(b=(a=gets).size-1)).to_a.flat_map{|i|(0..(b-i)).to_a.map{|j|a[j,i]}}.select{|k|k=~/^[aeiou]+$/}

গল্ফ করার এটি আমার প্রথম প্রচেষ্টা এবং আমি নিশ্চিত যে এই কোডটি ছোট করার অনেক উপায় রয়েছে ways




0

টি-এসকিউএল (এসকিউএল সার্ভার 2014), 281 বাইট

;with s as(select substring(@,1,1)C,stuff(@,1,1,'')D,1 R union all select substring(D,1,1),stuff(D,1,1,''),R+1from s where len(D)>0),c as(select R i,C w from s where C LIKE'[aeiou]'union all select R,w+C from c join s ON i+1=R where s.C LIKE'[aeiou]')select w from c where len(w)>1

ইনপুট দিয়ে দিন

declare @ varchar(max) = 'abeoic'

অর্ডারযুক্ত sস্বতন্ত্র অক্ষরগুলিতে ইনপুটটি পৃথক করে ছড়িয়ে দিতে সাধারণ টেবিল এক্সপ্রেশন এবং তারপরে দ্বিতীয় সাধারণ টেবিল এক্সপ্রেশন ব্যবহার করেc নন স্বরগুলি ছুঁড়ে ফেলে সমস্ত আদেশযুক্ত সংমিশ্রণ উত্পন্ন করতে ।

এসকিউএল ফিডল


0

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

function y($s){$p=[];$l=strlen($s);for($i=2;$i<=$l;$i++)for($j=0;$j<=$l-$i;$j++)strspn($a=substr($s,$j,$i),'aeiou')==$i&&$p[]=$a;return$p;}

অনলাইন ডেমো

function yreadable($s)
{
    $p = [];
    $l = strlen($s);
    for($i=2; $i<=$l; $i++)
        for($j=0; $j<=$l-$i; $j++)
            strspn($a=substr($s,$j,$i),'aeiou')==$i
            && $p[] = $a;
    return $p;
}

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

সংলগ্ন অক্ষর সমন্বয়ে উপ-স্ট্রিংগুলি (2 দৈর্ঘ্যের সাথে শুরু) নির্বাচন করুন এবং স্ট্রিং বরাবর সরান। যে কোনও সাব-স্ট্রিং সংগ্রহ করুন যাতে কেবল স্বর থাকে। দীর্ঘ উপ-স্ট্রিংগুলির সাথে পুনরাবৃত্তি করুন।

স্ট্রিং 'abcdef' এর জন্য এগুলি উত্পাদিত এবং পরীক্ষিত সাবস্ট্রিংগুলি:

'ab','bc','cd','de','ef'
'abc','bcd','cde','def'
'abcd','bcde','cdef'
'abcde','bcdef',
'abcdef'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.