প্রোগ্রামুজ্জল এবং কলফ


76

কখনও ক্রেডিট করেছেন টুইটার হ্যাশট্যাগ যেমন # ব্রেক্সিট বা # ব্র্যাঞ্জলিনা ? এই গল্ফ আপনার জন্য


একটি প্রোগ্রাম লিখুন যা দুটি স্ট্রিং এ এবং বি কে ইনপুট হিসাবে গ্রহণ করে এবং নিম্নলিখিত অ্যালগরিদম অনুযায়ী সেগুলিকে মার্জ করে:

  1. এ-তে nস্বরবর্ণের সংখ্যার সংখ্যা হওয়া যাক (যেমন britain2 স্বর গোষ্ঠী রয়েছে: iঅবস্থান 3 এবং ai5 নম্বরে )।
    • যদি এন = 1: এটিকে প্রথম স্বরবর্ণের গোষ্ঠী অবস্থান থেকে শুরু করে (উদাহরণ: bill=> b)
    • যদি এন> 1: এটিকে এর n-1স্বরবর্ণের গ্রুপ অবস্থান থেকে শুরু করে কাটা (উদাহরণ: programming=> progr, britain=> br)
  2. বি এর শুরুতে সমস্ত ব্যঞ্জনবিন্দু সরান ( jennifer=> ennifer)
  3. সংশোধিত এ এবং বি সংযুক্ত করুন

স্বরগুলি হয় aeiou; ব্যঞ্জনবর্ণ হয় bcdfghjklmnpqrstvwxyz

ইনপুট

আপনি ধরে নিতে পারেন ইনপুট স্ট্রিংগুলি ছোট হাতের এবং এতে কমপক্ষে একটি স্বর এবং একটি ব্যঞ্জনা থাকে।

উদাহরণ

brad + angelina      => brangelina
britain + exit       => brexit
ben + jennifer       => bennifer
brangelina + exit    => brangelexit
bill + hillary       => billary
angelina + brad      => angelad
programming + puzzle => progruzzle
code + golf          => colf
out + go             => o

65
নতুন পরীক্ষার মামলা? donald trump
স্টিভি গ্রিফিন

5
এগুলি মূলত পোর্টম্যানটেস
mbomb007


1
@ এথ প্রডাকশনগুলি এ থেকে অনেকগুলি পৃথক সংমিশ্রণ তৈরি করে বলে মনে হয়Django + Angular = Djular
পিওরফেরেট

"এন -1 ম স্বর গোষ্ঠী অবস্থান" কী
l4m2

উত্তর:


24

রুবি, 44 43 40 + 1 = 41 বাইট

-pপতাকা জন্য +1 বাইট । STDIN এ স্থান-বিভাজন ইনপুট নেয়।
-1 বাইট ধন্যবাদ মার্টিন
ইন্ডার -2 বাইট হিস্টোক্র্যাটকে ধন্যবাদ

sub /([aeiou]+([^aeiou]*)){,2} \g<2>/,""

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

জিএনইউ সেড, 39 37 + 1 = 38 বাইট

-Eপতাকা জন্য +1 বাইট । STDIN এ স্থান-বিভাজন ইনপুট নেয়।
-১ বাইট ধন্যবাদ মার্টিন ইন্ডারকে

s/([aeiou]+[^aeiou]*){,2} [^aeiou]*//

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

এটি পৃথক উত্তর হিসাবে পোস্ট করা হচ্ছে না কারণ এটি আক্ষরিকভাবে একই সমাধান।


ভাল রেগেক্স! মনে মনে যদি আমি এর জেএস উত্তরে এর অংশটি ব্যবহার করি?
ETH প্রোডাকশনস

অবশ্যই, পাগল হয়ে যাও
জর্দান

3
[^aeiou]/([aeiou]+([^aeiou]*)){,2} \g<2>/
সুবেস


1
@ আনকো এই উত্তরে "বিশেষ অনুরোধগুলি" দেখুন । TL; DR: কেবলমাত্র ডিফল্ট অনুরোধ ছাড়াও বাইটগুলি গণনা করুন। রুবির ডিফল্ট অনুরোধটি হ'ল ruby -e "..."। এটি এর জন্য ruby -pe "...", সুতরাং এটি কেবল একটি বাইট যুক্ত করে।
জর্দান

12

এমএটিএল, 31 30 বাইট

t13Y2XJmFwhdl=fql_):)itJmYsg)h

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

ব্যাখ্যা

t       % Implicitly grab the input and duplicate it
13Y2    % Push the string literal 'aeiouAEIOU'
XJ      % Store this in clipboard J for later use
m       % Check which characters from the input are vowels (true for vowel)
Fwh     % Prepend FALSE to this logical array
dl=     % Compute the difference and find where we went from not-vowel to vowel
f       % Find the indices of these transitions
q       % Subtract 1 to get the location of the last consonant in each transition
l_)     % Get the next-to-last one of these
:)      % Grab the first string up to this location

% Now for the second component!

it      % Explicitly grab the input and duplicate
J       % Retrieve the string literal 'aeiouAEIOU' from clipboard J
m       % Find where the vowels are (true for vowel)
Ys      % Compute the cumulative sum along the array. The result will be 0
        % for all characters before the first vowel and non-zero after
g)      % Convert to logical and use this as an index so any characters
        % after the first value are retrieved

% Now to combine them

h       % Horizontally concatenate the first and second pieces together
        % Implicitly display the result

1
আমি সর্বদা খুশির কোডটি উত্সাহিত করি
Andras Deak

12

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

@ জোর্দানকে 8 বাইট সংরক্ষণ করা হয়েছে, @ ডেভিডকনরডকে 1 ধন্যবাদ

a=>b=>a.match(/.*?(?=(?:[aeiou]+[^aeiou]*){1,2}$)/)+b.match(/[aeiou].*/)

যদিও .matchএকটি অ্যারে array+arrayপ্রদান করে, অ্যারে কনটেনেটেড (যেমন [0]+[1]প্রত্যাবর্তন "01") এর সামগ্রীর সাথে একটি স্ট্রিং প্রদান করে ।

পরীক্ষার স্নিপেট

জর্ডানের চমৎকার রুবি দ্রষ্টব্য জেএসে 53 বাইট হবে:

x=>x.replace(/([aeiou]+[^aeiou]*){1,2} [^aeiou]*/,"")

সম্ভবত কেবল ম্যাচ বিট ফেলে দিতে এবং একটি প্রতিস্থাপন ব্যবহার করতে পারে?
কনর ও'ব্রায়েন

@ কনরও'ব্রায়ান এই ধরনেরটি জর্ডানের উত্তর চুরির মতো অনুভব করছে: /
ইটিএইচ প্রোডাকশনস

আপনি বেশ আক্ষরিক আমার মন পড়া। এবং হ্যাঁ, এটি সত্য
কনার ও'ব্রায়েন

1
1 বাইট সংরক্ষণের (a,b)=>জন্য কারি হচ্ছে ing a=>b=>
ডেভিড কনরাড

7

জেলি , 23 22 বাইট

eۯcT
ǵḟ‘-ị’
Ç⁸ḣ⁹ÑḢ⁹ṫ

TryItOnline

কিভাবে?

eۯcT    - Link 1, vowel indexes: s   e.g. "colouring"
  Øc     - yield vowels, "AEIOUaeiou"
e€       - in for each                     [0,1,0,1,1,0,1,0,0]
    T    - truthy indexes (1-based)        [2,4,5,7]

ǵḟ‘-ị’  - Link 2, n-1th or only vowel group index start - 1: s
 µ       - monadic chain separation
Ç        - call last link (1) as a monad   [2,4,5,7]
   ‘     - increment                       [3,5,6,8]
  ḟ      - filter out                      [2,4,7]
    -    - -1
     ị   - index value                     [4]
               (Jelly is 1-based and has modular indexing,
                so the last but one item is at index -1,
                and when there is only 1 item in the list it is also at index -1)
      ’  - decrement                       [3]

Ç⁸ḣ⁹ÑḢ⁹ṫ - Main link: a, b                      e.g. "colouring", "pencils"
Ç        - call last link (2) as a monad with a      [3]
 ⁸       - link's left argument, a
  ḣ      - head a[:y]                                "col"
   ⁹  ⁹  - link's right argument, b
    Ñ    - call next link (1) as a monad                          [2,5]
     Ḣ   - pop head                                               [2]
       ṫ - tail b[y-1:]                                           "encils"
         - implicit print                            "colencils"

সুন্দর করে ব্যাখ্যা করা হয়েছে!
পিওরফেরেট

5

পাওয়ারশেল ভি 2 +, 76 বাইট

param($n,$m)($n-replace'([aeiou]+[^aeiou]*){1,2}$')+($m-replace'^[^aeiou]*')

স্পষ্টতই এটি একটি জনপ্রিয় রেজেক্স ... ;-)

-replaceউপযুক্ত টুকরো টানতে অপারেটরটি ব্যবহার করে , তারপরে ফলাফলগুলি একসাথে স্ট্র্যাটেটেটেটেট করে। $আমরা স্ট্রিংয়ের শেষ টানছি তা নিশ্চিত করার জন্য প্রথমে একটিতে যুক্ত করুন এবং ^আমরা স্ট্রিংয়ের সামনের অংশটি টানতে পারি তা নিশ্চিত করতে একটিতে দ্বিতীয় যুক্ত করে।


4

রেটিনা , 35 বাইট

([aeiou]+[^aeiou]*){1,2} [^aeiou]*

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে))

সহজভাবে প্রথম লাইনে রেজেক্সের সমস্ত ম্যাচ সরিয়ে দেয়।


1
স্বর এবং স্বরবর্ণের ক্লাস যুক্ত করার কোনও পরিকল্পনা? ;-)
ইটিএইচ প্রোডাকশনস

@ এইচটি প্রোডাকশনগুলি যদি আমি কখনও আমার নিজের রেইগেক্স ফ্লেভারটি প্রয়োগ করতে বিরক্ত হতে পারি (বা কমপক্ষে এটি টোকেনাইজ করুন যাতে এটি। নেট রেজেক্সে স্থানান্তরিত করা যায়), নিশ্চিত! : পি
মার্টিন এন্ডার

রুবি প্যাটার্ন ব্যাকরেফারেন্স করতে পারে (একই প্যাটার্ন যা অক্ষরের আলাদা ক্রমের সাথে মেলে)। এগুলি এখানে দরকারী হবে। উদাহরণস্বরূপ, /^((\(\g<1>\))*)$/রুবিতে ম্যাচিং বন্ধনীর সাথে মিল রয়েছে ।
জন ডিভোরাক

1
@ জনডভোরাক খুব খারাপ রেটিনা .NET- এ লেখা আছে, হাহ? ;) আমি এটি github.com/ltrzesniewski/pcre-net দিয়ে বান্ডিল করার বিষয়টি বিবেচনা করেছি যাতে আপনি স্বাদগুলি স্যুইচ করতে পারেন, তবে এখনও এটির সন্ধান করতে পারেন নি এবং অন্যান্য কিছু বৈশিষ্ট্য ক্রমশ। নেট-নির্দিষ্ট ম্যাচের আচরণের উপর নির্ভর করছে।
মার্টিন এন্ডার

1
.Net নির্দিষ্ট আচরণ ছেড়ে রুবিতে সবকিছু আবার লেখার সময়? রুবি যাইহোক ভাল :-)
জন ডিভোরাক

4

দারুচিনি গাম, 23 বাইট

0000000: 64d3 884e 4ccd cc2f 8dd5 8e8e 8330 b434  d..NL../.....0.4
0000010: b108 d92b c0d9 00                        ...+...

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

ব্যাখ্যা

এটি এর সাথে সংশ্লেষিত হয় d([aeiou]+[^aeiou]*)([aeiou]+[^aeiou]*)? [^aeiou]*, যা সেই dরেজেক্সের সাথে মিলে যে কোনও কিছুর একাদশ করে। (দ্রষ্টব্য যে জর্ডানের গল্ফিয়ার d([aeiou]+[^aeiou]*){,2} [^aeiou]*বারবার সংকোচন করার উপাদানগুলির অভাবের কারণে 24 বাইটে কমপ্রেস হয়))


চান d[aeiou]+[^aeiou]*[aeiou]*[^aeiou]* [^aeiou]*কোন খাটো হতে পারে?
ETH প্রোডাকশনস

@ ইথ প্রডাকশনগুলি আমি চেষ্টা করেছিলাম, এটি একই বাইট গণনা ছিল :(
একটি স্প্যাগেটো

3

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

$t="aeiou]";echo($p=preg_filter)("#([$t+[^$t*){1,2}$#","",$argv[1]).$p("#^[^$t*#","",$argv[2]);

প্রিগ_ফিল্টার 110 বাইটের পরিবর্তে প্রেগ_ম্যাচ সহ

$t="aeiou]";($p=preg_match)("#(.*?)([$t+[^$t*){1,2}$#",$argv[1],$m);$p("#[$t.*#",$argv[2],$n);echo$m[1].$n[0];

1
আপনি +পরিবর্তে ব্যবহার করতে পারেন {1,2}
তিতাস

@ টিটাস আরও গুরুত্বপূর্ণ ছিল যে 1 টি মামলার জন্য বাগটি মুছে ফেলা হয়েছিল এবং এখন আমি এটিকে গল্ফ করার চেষ্টা করতে পারি
জার্গ হালসারম্যান

$v=aeiou;আরও 3 টি সঞ্চয় করতে ব্যবহার করুন ।
টাইটাস

টাইটাস আমার একই ধারণা ছিল তবে কিছুটা বৈকল্পিক with আপনাকে ধন্যবাদ
Jörg Hülsermann


2

পার্ল 5, 39 বাইট

-peপরিবর্তে 38, যোগ 1-e

s/([aeiou]+[^aeiou]*){1,2} [^aeiou]*//

টুপি টিপ।


সেড উত্তর হিসাবে একই সাথে সংযুক্ত, কিন্তু আমরা পাশাপাশি এটি পার্ল মধ্যে থাকতে পারে।
এমএস 210


2

Lithp , 65 বাইট

#X::((replace X (regex "([aeiou]+[^aeiou]*){1,2} [^aeiou]*") ""))

এটি আমার লিপ-ইশ কার্যকরী প্রোগ্রামিং ভাষায় মূলত উপরের জাভাস্ক্রিপ্ট উত্তরের একটি বন্দর।

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

(
    % Note, you can define this as a function, or assign it to a variable
    % and use the call function instead.
    (def f #X::((replace X (regex "([aeiou]+[^aeiou]*){1,2} [^aeiou]*") "")))
    (print (f "programming puzzle"))
)

এখনও কোনও অনলাইন দোভাষী নেই। আমি শীঘ্রই একটি সরবরাহ করব। এটি কঠিন হবে না, আমার ভাষা জাভাস্ক্রিপ্টে লেখা আছে।

পরিবর্তে, এই ধাঁধা সমাধানটি আমার ভাষার জন্য কার্যকর উদাহরণ হিসাবে প্রয়োগ করা হয়েছে। এটি নিম্নলিখিত কমান্ড দিয়ে চালানো যেতে পারে:

node run.js l_src/progruzzle-colf.lithp

2

হাস্কেল, 111 108 বাইট

v x=elem x"aeiou"
d=dropWhile
e=d v
k=d$not.v
r=reverse
f a|c<-e.k.e.k$a,""/=c=c|1<3=e.k$a
a!b=(r.f.r)a++k b

এই নন-রেজেক্স সমাধানটি প্রত্যাশার চেয়ে দীর্ঘ হয়ে গেল। যাইহোক এটি আদর্শ।



1

জাপট , 18 বাইট

r/\v+\V*){1,2} \V*

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

সংক্ষিপ্ত জেএস সমাধানের সরাসরি বন্দর যা জর্ডানের রুবি সমাধানের বন্দরকে ঘুরিয়ে দেয় ।

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

Ur/\v+\V*){1,2} \V*/

Ur    Replace on the input...
/\v+\V*){1,2} \V*/  this regex with empty string.
      \v == [AEIOUaeiou], \V == [^AEIOUaeiou], `g` flag is on by default in Japt
      so the uncompressed regex is roughly /([aeiou]+[^aeiou]*){1,2} [^aeiou]*/g.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.