সিঁড়ি লেখা


35

এমন একটি প্রোগ্রাম বা একটি ফাংশন লিখুন যা একটি সিঁড়ি ফ্যাশনে প্রদত্ত স্ট্রিংকে আউটপুট দেবে, শব্দের প্রতিটি অংশ লিখবে যা আগের অংশের নীচে একটি স্বর দিয়ে শুরু হবে।

উদাহরণ স্বরূপ:

Input: Programming Puzzles and Code Golf


Output: Pr          P           C    G
          ogr        uzzl   and  od   olf
             amm         es        e
                ing

ইনপুট

একটি স্ট্রিং যা অক্ষর এবং শূন্যস্থান ব্যতীত কিছুই থাকে না।

স্ট্রিংটি যুক্ত STDINবা ফাংশন আর্গুমেন্ট বা সমতুল যে কোনও কিছুর মধ্য দিয়ে যেতে পারে ।

চিঠিগুলি ছোট হাতের বা বড় হাতের হতে পারে।

ইনপুটগুলি সর্বদা এই নিয়মগুলি অনুসরণ করে ধরে নেওয়া হয়, আপনার ভুল ইনপুটগুলি পরীক্ষা করার দরকার নেই।

আউটপুট

প্রতিবার একটি স্বরবর্ণ (যে a, e, i, o, uবা y) একটি শব্দ সম্মুখীন হয়, আপনি অবশ্যই আউটপুট পরবর্তী লাইন (সম্মুখীন স্বরবর্ণ অন্তর্ভুক্ত) শব্দ বাকি, সঠিক অনুভূমিক অবস্থানে। এই নিয়মটি পুনরাবৃত্ত, যার অর্থ শব্দটিতে এন স্বরগুলি থাকে তবে এটি এন + 1 লাইনে লেখা হবে be

  • স্বরটি পরবর্তী লাইনের শুরুতে লেখা উচিত, এবং যখন কোনও মুখোমুখি হয় তখন পূর্ববর্তী লাইনের শেষে নয়।

  • প্রতিটি শব্দ প্রথম লাইনে শুরু হয় এবং এইভাবে অন্য শব্দ থেকে স্বতঃ বিন্যাস করা উচিত। দুটি শব্দ একটি স্থান দ্বারা পৃথক করা হয়।

  • যদি একটি শব্দ একটি স্বর দিয়ে শুরু হয়, আপনাকে এটি দ্বিতীয় লাইনে শুরু করে লিখতে হবে।

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

  • ইনপুট: Programming Puzzles and Code Golf

আউটপুট:

Pr          P           C    G
  ogr        uzzl   and  od   olf
     amm         es        e
        ing
  • ইনপুট: The quick brown fox jumps over the lazy dog

আউটপুট:

Th  q     br    f   j          th  l    d
  e  u      own  ox  umps ov     e  az   og
      ick                   er        y
  • ইনপুট: aeiouy

আউটপুট:

 
a
 e
  i
   o
    u
     y
  • ইনপুট: YEAh UppErcAsE VOwEls

আউটপুট:

               V
Y    Upp        Ow
 E      Erc       Els
  Ah       As  
             E
  • ইনপুট: If you only knew the power of the Dark Side

আউটপুট:

            kn   th  p        th  D    S
If y   onl    ew   e  ow   of   e  ark  id
    o     y             er                e
     u

স্কোরিং

এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী।


তৃতীয় আউটপুট উদাহরণটি "এই শব্দটি যদি একটি স্বর দিয়ে শুরু হয়, আপনাকে দ্বিতীয় লাইনে শুরু করে লিখতে হবে" এই নিয়মের সাথে সঙ্গতিপূর্ণ নয় বলে মনে হয়।
জন

1
Y হ'ল স্বর কি?
অপ্টিমাইজার

1
@ জন সত্যই এটি ছিল, আমি এটি ঠিক করেছিলাম। ধন্যবাদ।
ফ্যাটালাইজ করুন

2
The vowel should be written at the beginning of the next line, and not at the end of the previous line when one is encountered.কিছুটা চিন্তাভাবনা করার পরে, আমি বুঝতে পেরেছি যে এর অর্থ হ'ল স্বরটি ছাপার আগে পরবর্তী লাইনে চলে যাওয়া উচিত, পরে নয়, তবে তাত্ক্ষণিকভাবে বোধগম্য এমন উপায়ে এটি শব্দটির পক্ষে মূল্যবান হতে পারে - এটি আমাকে কিছুটা সময় নিয়েছিল।
ট্রাইকোপ্লাক্স

3
নতুন লাইনের / ফাঁকা স্থানগুলি কি অনুমোদিত?
লুভজো

উত্তর:


18

রেটিনা , 50 44 34 (+10) 32 30 বাইট

ডেনিসকে প্রকৃত নিয়ন্ত্রণ অক্ষর ব্যবহার করে 14 বাইট সংরক্ষণ করার জন্য ধন্যবাদ।

i`[aeiouy]
<VT>$0#
+`#(\S*)
$1<ESC>[A

এই উত্তরের উপর ভিত্তি করে , আমি টার্মিনাল কার্সারটিকে উল্লম্বভাবে সরানোর জন্য এএনএসআই এস্কেপ কোড ব্যবহার করছি। <ESC>নিয়ন্ত্রণের অক্ষর 0x1B এবং <VT>উল্লম্ব ট্যাব দ্বারা প্রতিস্থাপন করা উচিত 0x0B। সহজ পরীক্ষামূলক জন্য, আপনি প্রতিস্থাপন করতে পারেন <ESC>সঙ্গে \e, <VT>সঙ্গে \vমাধ্যমে আউটপুট ভোজন printf

গণনা উদ্দেশ্যে, প্রতিটি লাইন পৃথক ফাইলে যায়। তবে, সুবিধার জন্য কেবল একটি একক ফাইলে কোডটি আটকানো সহজ এবং -sবিকল্পের সাথে রেটিনাকে অনুরোধ করা ।

প্রথম প্রতিস্থাপন প্রতিটি স্বরকে ঘিরে থাকে \v...#, যেখানে \vকার্সারটি নীচের দিকে স্থানান্তরিত হয় এবং #এটি দ্বিতীয় ধাপের জন্য চিহ্নিতকারী। i`কেস-অবশ মিলের জন্য অক্ষিপট এর স্বরলিপি হয়।

দ্বিতীয় ধাপে বারবার ( +`) #একটি শব্দ থেকে একটি সরিয়ে দেয় এবং শব্দের e\[Aশেষে একটি রাখে যা কার্সারটিকে উপরের দিকে সরিয়ে দেয়। স্ট্রিং পরিবর্তন বন্ধ হয়ে যাওয়ার পরে এটি বন্ধ হয়ে যায়, অর্থাত্ স্ট্রিংটিতে আর কোনও #মার্কার না থাকে।


আপনি প্রয়োজন হবে না printf\eESC বাইট (0x1 বি) দিয়ে কেবল প্রতিস্থাপন করুন ।
ডেনিস

@ ডেনিস ওহ, এটি আরও ভাল, আপনাকে ধন্যবাদ।
মার্টিন ইন্ডার

1
এটি এত দুর্দান্ত!
kirbyfan64sos

এই উত্তরটির কারণেই কেন কেউ রেটিনাকে গুরুত্ব সহকারে নেয় না;)
ক্রিস্টোফার র্ট

@ ক্রিস্টোফারওয়ার্ট দয়া করে বিশদ করুন :) (যদিও কেউ রেটিনাকে গুরুত্ব সহকারে নিলে আমি আসলেই আতঙ্কিত হতাম ।)
মার্টিন এন্ডার

8

সিজেম, 39 36 বাইট

0000000: 6c 7b 5f 65 6c 22 61 65 69 6f 75 79 22  l{_el"aeiouy"
000000d: 26 7b 22 1b 5b 41 22 27 0b 6f 5c 7d 26  &{".[A"'.o\}&
000001a: 5f 53 26 7b 5d 7d 26 6f 7d 2f           _S&{]}&o}/

উপরেরটি একটি বিপরীতমুখী এক্সএক্সডি ডাম্প, যেহেতু উত্স কোডটিতে অচিহ্নিত অক্ষর ভিটি (কোড পয়েন্ট 0x0 বি) এবং ইসি (কোড পয়েন্ট 0x1 বি) রয়েছে।

এই উত্তরের মতো , এটি উল্লম্ব ট্যাব এবং এএনএসআই এস্কেপ সিকোয়েন্স ব্যবহার করে

এর জন্য একটি সমর্থনকারী ভিডিও পাঠ্য টার্মিনাল প্রয়োজন, যার মধ্যে বেশিরভাগ উইন্ডোজ টার্মিনাল এমুলেটর রয়েছে।

টেস্ট রান

আসল কোডটি কার্যকর করার আগে, আমরা প্রম্পটটি অক্ষম করব এবং স্ক্রিনটি সাফ করব।

$ PS1save="$PS1"
$ unset PS1
$ clear

এটি নিশ্চিত করে যে আউটপুটটি সঠিকভাবে প্রদর্শিত হয়েছে।

echo -n Programming Puzzles and Code Golf | cjam <(xxd -ps -r <<< 6c7b5f656c226165696f757922267b221b5b4122270b6f5c7d265f53267b5d7d266f7d2f)
Pr          P           C    G
  ogr        uzzl   and  od   olf
     amm         es        e
        ing

প্রম্পটটি পুনরুদ্ধার করতে, এটি সম্পাদন করুন:

PS1="$PS1save"

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

কার্সারটি প্রথম সারিতে ফিরিয়ে আনার জন্য প্রতিটি স্থানের পরে কার্সারটি নিচে নামানোর জন্য এবং প্রতিটি স্পেসের পরে বাইট সিকোয়েন্স 1 বি 5 বি 41 ( "\e[A") এর পর্যাপ্ত অনুলিপিগুলির জন্য আমরা প্রতিটি স্বর আগে একটি উল্লম্ব ট্যাব সন্নিবেশ করি ।

l           e# Read a line from STDIN.
{           e# For each character C:
  _el       e#   Push lowercase(C).
  "aeiouy"& e#   Intersect with "aeiouy".
  {         e#   If the intersection is non-empty:
    ".[A"   e#     Push "\e[A" (will be printed later).
    '.o     e#     Print "\v".
    \       e#     Swap "\e[A" with C.
  }&        e#
  _S&       e#   Intersect C with " ".
  {         e#   If the intersection is non-empty:
    ]       e#     Wrap the entire stack in an array.
  }&
  o         e#   Print C or the entire stack.
}/          e#

unset PS1saveপরে ভুলবেন না ।
usandfriends

5

জাভা, 428 বাইট

void s(String s){int l=s.length(),m=0;char[][]c=new char[l][];for(int i=0;i<c.length;java.util.Arrays.fill(c[i++],' '))c[i]=new char[l];String v="aeiouyAEIOUY";String[]a=s.split(" ");for(int r=0,p=0;r<a.length;r++){String u=a[r]+" ";int o=v.indexOf(u.charAt(0))>=0?1:0,x=p;for(;x<u.length()-1+p;o+=v.indexOf(u.charAt(x++-~-p))>=0?1:0)c[o][x]=u.charAt(x-p);p+=u.length();m=m<o?o:m;}for(int i=0;i<=m;i++)System.out.println(c[i]);}

আমি জানি, এটা ভয়াবহ। সম্ভবত কিছু অক্ষর মুণ্ডিত করা যেতে পারে, তবে আমি এটি করতে খুব অলস।


আপনি সম্ভবত আপনার অনেক ডিক্লেয়ার করতে পারেন intভেরিয়েবল (যথা i, r, p, o, এবং x) যেখানে আপনি আরম্ভ lএবং mযেহেতু তারা মান পরে দেওয়া হবে। আপনি String v="...",a[]=...;উপরের মতো একই কাজটি করতে ও করতেও পারেন String u। এটি আপনার স্কোরকে কিছুটা কমিয়ে আনতে হবে।
টিএনটি

আমিx++-~-p
Ypnypn

4

পার্ল, 31 বাইট

0000000: 24 5c 3d 22 1b 5b 41 22 78 20 73 2f 5b 61  $\=".[A"x s/[a
000000e: 65 69 6f 75 79 5d 2f 0b 24 26 2f 67 69     eiouy]/.$&/gi

উপরেরটি একটি বিপরীতমুখী এক্সএক্সডি ডাম্প, যেহেতু উত্স কোডটিতে অচিহ্নিত অক্ষর ভিটি (কোড পয়েন্ট 0x0 বি) এবং ইসি (কোড পয়েন্ট 0x1 বি) রয়েছে।

কোডটি 27 বাইট দীর্ঘ এবং এতে স্যুইচগুলি 040p(4 বাইট) প্রয়োজন।

প্রোগ্রামটির জন্য একটি ভিডিও পাঠ্য টার্মিনাল দরকার যা উল্লম্ব ট্যাব এবং এএনএসআই এস্কেপ সিকোয়েন্সগুলিকে সমর্থন করে , যার মধ্যে বেশিরভাগ উইন্ডোজ টার্মিনাল এমুলেটর রয়েছে।

টেস্ট রান

আসল কোডটি কার্যকর করার আগে, আমরা প্রম্পটটি অক্ষম করব এবং স্ক্রিনটি সাফ করব।

$ PS1save="$PS1"
$ unset PS1
$ clear

এটি নিশ্চিত করে যে আউটপুটটি সঠিকভাবে প্রদর্শিত হয়েছে।

echo -n Programming Puzzles and Code Golf | perl -040pe "$(xxd -ps -r <<< 245c3d221b5b41227820732f5b6165696f75795d2f0b24262f6769)"
Pr          P           C    G
  ogr        uzzl   and  od   olf
     amm         es        e 
        ing

প্রম্পটটি পুনরুদ্ধার করতে, এটি সম্পাদন করুন:

PS1="$PS1save"

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

  • perl -040pস্থান-বিচ্ছিন্ন টোকেন ( -040) হিসাবে স্বয়ংক্রিয়ভাবে ইনপুটটি পড়ে ( ) প্রতিটি টোকেনকে $_( -p) সংরক্ষণ করে এবং প্রোগ্রামটি কার্যকর করে।

  • s/[aeiouy]/.$&/gi$_স্বরবর্ণের জন্য একটি গ্লোবাল, কেস-সংবেদনশীল অনুসন্ধান সম্পাদন করে এবং প্রতিটি স্বর প্রতিস্থাপন করে কন্ট্রোল অক্ষর ভিটি (কার্সারটি নীচে সরায়) দ্বারা স্বরটি অনুসরণ করে।

  • sএটি প্রতিস্থাপনের সংখ্যাটি ফিরিয়ে দেয়, সুতরাং $\=".[A"x s...বাইট সিকোয়েন্স 1 বি 5 বি 41 এর একাধিক অনুলিপি (কার্সারটিকে উপরে সরায়) সংরক্ষণ করে $\, প্রতিটি স্বরটির জন্য একটি করে।

  • প্রোগ্রামের শেষে, পার্ল স্বয়ংক্রিয়ভাবে মুদ্রণ করে "$_$\", কারণ -pস্যুইচ।


4

সি, 200 190 বাইট

i,j,k,l,M;f(char*s){M=strlen(s)+1;char t[M*M];for(;i<M*M;++i)t[i]=(i+1)%M?32:10;for(i=0;i<M-1;++i)k=(strspn(s+i,"aeiouyAEIOUY")?++j:s[i]==32?j=0:j)*M+i,l<k?l=k:0,t[k]=s[i];t[l+1]=0;puts(t);}

Ungolfed:

i,j,k,l,M;
f(char *s){
    M = strlen(s)+1;
    char t[M*M];
    for(; i<M*M; ++i) t[i] = (i+1)%M ? 32 : 10;
    for(i=0; i<M-1; ++i)
        k = (strspn(s+i,"aeiouyAEIOUY") ? ++j : s[i]==32 ? j=0 : j) * M + i,
        l<k ? l=k : 0,
        t[k] = s[i];
    t[l+1]=0;
    puts(t);
}

এটি একটি আয়তক্ষেত্রাকার বাফার বরাদ্দ করে (আসলে বর্গক্ষেত্র), এটি ফাঁকা স্থান এবং নতুন লাইনের সাথে পূরণ করে, তারপর প্রদত্ত স্ট্রিংটিকে অতিক্রম করে। শেষের দিকে এটি নতুন লাইনগুলি রোধ করার জন্য একটি শূন্য চরিত্র যুক্ত করে।

প্রযুক্তিগতভাবে এটি কোনও ফাংশন নয় কারণ এতে গ্লোবাল রয়েছে; বাস্তবে এটিকে একাধিকবার বলা যাবে না ( jএবং lশুরুতে এটি 0 হতে হবে)। মেনে চলার জন্য, ফাংশনটির শুরুতে i,j,k,l,M;স্থানান্তরিত হতে পারে int i,j=0,k,l=0,M;


char*t=malloc(M*M);-> char t[M*M];এবং for(i=0;i<M*M;++i)->for(;i<M*M;++i)
স্পিক্যাট্রিক্স

ভাল ক্যাচ, সম্পাদনা।
jcai

এই সি 99 শুধুমাত্র কারণে না char t[M*M]?
জাকারি

4

সিজেম, 47

হ্যাঁ, এটি কিছুটা দীর্ঘ, তবে এটি এএনএসআই কোডগুলি দিয়ে "প্রতারণা" করছে না :)

q_{_S&!\el"aeiouy"-!U+*:U}%_0|$])\zff{~@-S@?}N*

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

প্রতিটি চরিত্রের জন্য একটি লাইন নম্বর গণনা করা হয় (0 থেকে শুরু করে, স্বর দ্বারা বৃদ্ধি করা এবং স্পেসে 0 এ ফিরে আসা) এবং তারপরে প্রতিটি লাইনের জন্য স্ট্রিংটি পুনরাবৃত্তি করে তবে একটি অক্ষরের পরিবর্তে একটি স্পেসের সাথে পৃথক রেখাটি প্রতিস্থাপন করা হবে ।


3

কে, 81 72 70 66 বাইট

ঠিক আছে, এটি একটি সূচনা:

`0:{+{(-z)!y,x#" "}[|/s].'x,'s:,/{+\{12>"aeiouyAEIOUY"?x}'x}'(0,&~{"  "?x}'x)_ x}

ব্যবহারের উদাহরণ:

  `0:{+{(-z)!y,x#" "}[|/s].'x,'s:,/{+\{12>"aeiouyAEIOUY"?x}'x}'(0,&~{"  "?x}'x)_ x} "Programming Puzzles and Code Golf"
Pr          P           C    G   
  ogr        uzzl   and  od   olf
     amm         es        e     
        ing                      
  `0:{+{(-z)!y,x#" "}[|/s].'x,'s:,/{+\{12>"aeiouyAEIOUY"?x}'x}'(0,&~{"  "?x}'x)_ x} "YEAh UppErcAsE VOwEls"
               V     
Y    Upp        Ow   
 E      Erc       Els
  Ah       As        
             E       

সম্পাদনা 1:

উত্তম. পৃষ্ঠতল কিছু উন্নতি করেছেন:

`0:{+{(-z)!y,x#" "}[|/s].'x,'s:,/{+\{12>"aeiouyAEIOUY"?x}'x}'(0,&~{"  "?x}'x)_ x}
`0:{+{(-z)!y,x#" "}[|/s].'x,'s:,/(+\12>?["aeiouyAEIOUY"]')'_[0,&" "=x]x}

উল্লেখ্য, আমি আর্গুমেন্ট উল্টানো ?যখন আমি স্বরবর্ণ অনুসন্ধান এবং এইভাবে একটি ল্যামডা জন্য প্রয়োজন নির্মূল কার্য সম্পাদন, সঙ্গে একই বিপর্যয় করেনি _যেখানে আমি হোয়াইটস্পেস শব্দের বিভক্ত, এবং আমি বুঝলাম যে ~{" "?x}'xসত্যিই একটি নিরীহ বললেন এর overcomplicated উপায় " "=x

সম্পাদনা 2:

আর একটি তল স্তরের স্তূপ - sল্যাম্বডায় প্রয়োগ করার আগে তা উপেক্ষা করুন , ভিতরে প্যারেন্স সংরক্ষণ করুন:

`0:{+{(-z)!y,x#" "}[|/s].'x,'s:,/(+\12>?["aeiouyAEIOUY"]')'_[0,&" "=x]x}
`0:{+{z!y,x#" "}[|/s].'x,'-s:,/(+\12>?["aeiouyAEIOUY"]')'_[0,&" "=x]x}

সম্পাদনা 3:

ঠিক আছে, আসুন প্রতিটি চরিত্রের জন্য অফসেট গণনা করার জন্য একটি পৃথক পদ্ধতি গ্রহণ করি। স্থানগুলিতে ক্রমটি বিভক্ত করা এবং স্বরবৃত্তের +\অবস্থানের চলমান যোগফল ( ) নির্ণয়ের পরিবর্তে আমরা পুরো ইনপুট স্ট্রিংকে একটি পাসে পরিচালনা করতে পারি, যখনই আমরা কোনও স্পেসের মুখোমুখি হই তখন চলমান যোগফলকে 0 দ্বারা গুণিত করি। আমার এই ক্রমটির অবহেলা প্রয়োজন, সুতরাং আমি উল্লম্ব প্যাডিংয়ের পরিমাণ গণনা করার সময় #?সর্বাধিক ( |/) এর পরিবর্তে নম্বর-অফ-স্পষ্ট ( ) ব্যবহার করে যুক্ত করার পরিবর্তে বিয়োগ করতে পারি ।

`0:{+{z!y,x#" "}[|/s].'x,'-s:,/(+\12>?["aeiouyAEIOUY"]')'_[0,&" "=x]x}
`0:{+{z!y,x#" "}[#?s].'x,'s:1_0{(~" "=y)*x-12>"aeiouyAEIOUY"?y}\x}

এটি আরও 4 টি অক্ষর সংরক্ষণ করে। রাম রাম!


2

রুবি: 135 131 124 115 112 টি অক্ষর

a=[]
y=l=0
gets.split(r=/(?=[aeiouy ])/i).map{|w|w=~r&&y+=1
w<?A&&y=0
a[y]='%*s%s'%[-l,a[y],w]
l+=w.size}
puts a

নমুনা রান:

bash-4.3$ ruby staircase.rb <<< 'Programming Puzzles and Code Golf'
Pr          P           C    G
  ogr        uzzl   and  od   olf
     amm         es        e
        ing

যদি আমি ভুল না হয়ে থাকি তবে আপনি নিজের রেজেক্সটি ছোট করতে পারেন /(?=[aeiouy ])/i
অ্যালেক্স এ।

আহ, আপনি ঠিক @ অ্যালেক্সা ঠিক বলেছেন। পৃথক শব্দ হিসাবে স্থানটি শুধুমাত্র পূর্ববর্তী তত্ত্বের জন্য গুরুত্বপূর্ণ ছিল। ধন্যবাদ।
manatwork

2

সি, 192 বাইট

f(char*s){int l=0,r=1,v,c;for(;r;l=1){v=l;r=0;char*p;for(p=s;*p;++p){c=*p;if(c==' ')v=l,putchar(c);else if((strchr("aoeuiyAOEUIY",c)?--v:v)<0)r=1,putchar(' ');else*p=' ',putchar(c);}puts(p);}}

এটি স্ট্রিংটির মাধ্যমে পুনরাবৃত্তি হয়, অক্ষরগুলি মুদ্রণের সাথে সাথে এটিকে ফাঁকা করে দেয়। মুদ্রণের জন্য কোনও ফাঁকা স্থানবিহীন অক্ষর না পাওয়া পর্যন্ত এটি পুনরাবৃত্তি করে। এটি পোর্টেবল সি, অক্ষর এনকোডিং সম্পর্কে কোনও অনুমান করে না।

পাঠযোগ্য সংস্করণ

f(char *s) {
    int l=0,       /* true if we've done the first line (no vowels) */
        r=1,       /* true if characters remain in buffer */
        v,         /* how many vowels to print from current word */
        c;         /* current character value */
    for (l=0; r; l=1) {
        v = l;
        r = 0;
        char *p;
        for (p=s;*p;++p) {
            c=*p;
            if (c==' ') {       /* a space - reset vowel counter */
                v=l;
                putchar(c);
            } else if ((strchr("aoeuiyAOEUIY",c)?--v:v)<0) {
                /* vowel conter exceeded - print a space */
                putchar(' ');
                r=1;
            } else {
                /* print it, and obliterate it from next line of output */
                putchar(c);
                *p=' ';
            }
        }
        puts(p); /* p points at the NUL, so this just prints a newline */
    }
}

' '-> 32এবং f(char*s){int l=0,r=1,v,c;->l,r=1,v,c;f(char*s){
স্পিক্যাট্রিক্স

@ কুল - ' ' হতে পারে 32তবে এটি চরিত্রের এনকোডিংয়ের উপর নির্ভর করে, এবং যেমনটি আমি বলেছিলাম, আমি এই বহনযোগ্য সি তৈরি করেছিলাম স্পষ্টতাকে ফেলে দেওয়া intদুর্দান্ত, যদিও - কেন আমি ভুলে গেছি তা নিশ্চিত নয়!
টবি স্পিড 10

2

পাইথন 3, 265 207 202 185 177 টি অক্ষর

i=input()
w,e=i.split(" "),lambda:[[" "]*len(i)]
o,x=e(),0
for p in w:
    y=0
    for c in p:
        if c in"AEIOUYaeiouy":o+=e();y+=1
        o[y][x],x=c,x+1
    x+=1
for l in o:print("".join(l))

এটি ভয়ানক এবং আমি গর্বিত নই। আমি জানি এটি আরও খাটো করা যায় তবে আমি ভেবেছিলাম যেভাবেই পোস্ট করব।

সি সংস্করণ দ্বারা অনুপ্রাণিত হয়ে, এটি একটি তালিকা তৈরি করে যা ইনপুট স্ট্রিংটিকে অনুসরণ করার সময় পূরণ করা হয়।


2

জিএনইউ শেড, 151 + 1

( -rপতাকাটি যেমন প্রয়োজন তেমন +1 )

s/^/ /;h;s/[aoeuiy]/_/ig;:a;s/_[^ _]/__/;ta;y/_/ /;g;:x;:b;s/ [^ aoeuiy]/  /i;tb;h;s/([^ ])[aoeuiy]/\1_/ig;:c;s/_[^ _]/__/;tc;y/_/ /;g;s/ [^ ]/  /ig;tx

আমি ভেবেছিলাম যে সেড এই কাজের জন্য হাতিয়ার হবে তবে এটি আশ্চর্যরকমভাবে কঠিন বলে মনে হয়েছিল।

পঠনযোগ্য সংস্করণ:

#!/bin/sed -rf

# make sure the string starts with a space
s/^/ /
h

# print leading consonants, if any
s/[aoeuiy]/_/ig
:a
s/_[^ _]/__/
ta
y/_/ /
p
g

:x
# strip the consonants just printed
:b
s/ [^ aoeuiy]/  /i
tb
h

s/([^ ])[aoeuiy]/\1_/ig
:c
s/_[^ _]/__/
tc
y/_/ /
p
g
# remove leading vowel of each word
s/ [^ ]/  /ig
tx

আমি ভীত, এটি 128 অক্ষর হওয়া উচিত। এক-লাইন সংস্করণটি একটি অনুপস্থিত p, সুতরাং এটি কিছুই আউটপুট করে। একটি ছোট সমস্যা হ'ল আউটপুটগুলি অতিরিক্ত স্থান দিয়ে শুরু হয়। একটি বিশাল সমস্যা হ'ল স্বর দিয়ে শুরু হওয়া পাঠ্যের প্রথম অংশটি অদৃশ্য হয়ে যায়।
মানাটওয়ার্ক

আমি নিশ্চিত যে এটি আগে কাজ করেছে। আমি একবার তাকিয়ে দেখব আমি কী ভেঙে ফেলেছি। মাথা উঁচু করার জন্য ধন্যবাদ, @ মান্যাটওয়ার্ক!
টবি স্পিড 9

আমি লুপটিতে ঝাঁপিয়ে পড়ে ভুল করেছি c, ঠিক আগের লাইনের কারণে tx। আমি আগের সংস্করণটিকে একই ধরণের লুপ দিয়ে পুনরায় ইনস্টল করেছি এবং পরে আরও একটি চেষ্টা করব।
টবি স্পিড 10

2

পাইথন 2, 145 142 বাইট

সম্ভবত অন্যান্য কয়েকটি পদ্ধতির মতো প্রতিযোগিতামূলক নয়, তবে আমি ভেবেছিলাম এটি রেজেক্স ব্যবহারের দুর্দান্ত উপায়।

import re;s=I=input()[::-1]+" ";i=0
while s.strip()or i<2:s=re.sub("(?!([^aeiouy ]*[aeiouy]){%s}[^aeiouy]* )."%i," ",I,0,2)[::-1];print s;i+=1

রেজেক্স (?!([^aeiouy ]*[aeiouy]){N}[^aeiouy]* ).কোনও শব্দের শেষে থেকে অক্ষরের N-th গ্রুপের মধ্যে নয় এমন কোনও একক অক্ষরের সাথে মেলে । যেহেতু এটি বিশ্বের শেষ থেকে গণনা করা হয় আমি তার আগে এবং তারপরে স্ট্রিংটি বিপরীত করি এবং আমাকে শেষেও একটি স্পেস যোগ করতে হয় তবে তার পরে re.subএই চরিত্রগুলির প্রতিটি উদাহরণকে একটি স্থান দিয়ে প্রতিস্থাপন করার জন্য এটি একটি সাধারণ বিষয় হয়ে ওঠে । স্ট্রিং খালি না হওয়া পর্যন্ত এটি এন এর প্রতিটি মানের জন্য এটি করে।


এটি ব্যবহার করার মতো সুন্দর এবং পঠনযোগ্য হিসাবে re.Iউপযুক্ত ফ্ল্যাগ মানটি প্রতিস্থাপন করে আপনি 3 বাইট সংরক্ষণ করতে পারবেন 2
Sp3000

1
@ স্প3000 শুধুমাত্র কোড-গল্ফের "সুন্দর এবং পঠনযোগ্য"
কেএসব

1

অক্টাভা, 132 129 টি অক্ষর

p=1;x=[];y=input(0);for j=1:numel(y);if regexpi(y(j),'[aeiouy]');p+=1;elseif y(j)==" ";p=1;end;x(p,j)=y(j);end;x(x==0)=32;char(x)

পরীক্ষা

ইনপুট: "YEAh UppErcAsE VOwEls"

আউটপুট:

               ভী     
Y Upp Ow   
 E এরক এলস
  আহ        
             ই       

1

জেম : 53 48 টি অক্ষর

/[aeiouyAEIOUY]/=@append{u;^[[A}^K$1
 = $u@set{u;}

মনে রাখবেন যে ^[(x1b) এবং ^K(x0b) একক অক্ষর। (নীচের নমুনা দৌড়ে আমি তাদের কপি-পেস্ট বন্ধুত্বপূর্ণ \eএবং \vসমতুল্য ব্যবহার করি , যদি আপনি এটি ব্যবহার করে দেখতে চান))

নমুনা রান:

bash-4.3$ gema '/[aeiouyAEIOUY]/=@append{u;\e[A}\v$1; = $u@set{u;}' <<< 'Programming Puzzles and Code Golf'
Pr          P           C    G    
  ogr        uzzl   and  od   olf 
     amm         es        e 
        ing 

1

জেলি , 42 বাইট (প্রতিযোগী নয়?)

Ḳµe€Øyœṗ⁸⁶ṁ$;¥\z⁶Zµ€µḷ/⁶ṁW⁸;ḣ®µ€L€Ṁ©$¡ZK€Y

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

কেন জেলি, কেন? :-(


সিজেমের চেয়ে লম্বাটি অদ্ভুত বলে মনে হচ্ছে
178 এ ফ্যাটালাইজ করুন

@ ফ্যাটালাইজ করুন কারণ জেলি সাধারণত স্ট্রিং নিয়ে যায় না ... সাধারণত। এছাড়াও আপনি সত্যই বিভিন্ন প্রোগ্রামিং প্যারাডিজমের সাথে তুলনা করতে পারবেন না (সিজাম স্ট্যাক-ভিত্তিক, জেলিটি সুস্পষ্ট)।
এরিক আউটগল্ফার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.