গল্ফ ওয়াই সিড - ট্রিগ্ল্যাড


16

এই yng Nghymraeg পড়ুন

চ্যালেঞ্জ

ওয়েলশ ভাষায় একটি শব্দ দেওয়া, শব্দের সম্ভাব্য সমস্ত রূপান্তরিত ফর্মগুলির আউটপুট।

পরিব্যক্তি

কোনও শব্দের প্রথম অক্ষরের পরিবর্তন যখন কোনও নির্দিষ্ট শব্দ অনুসরণ করে বা নির্দিষ্ট ব্যাকরণগত প্রসঙ্গে পরিবর্তন হয় mut

ওয়েলশ ভাষায়, নিম্নলিখিতগুলি "ব্যঞ্জনবর্ণ" হিসাবে বিবেচিত হয়:

b c ch d dd f ff g ng h l ll m n p ph r rh s t th

নোট করুন যে একাধিক অক্ষর ব্যঞ্জনবর্ণ যেমন ch, এনজি এবং আরএইচ ওয়েলশ ভাষায় একটি বর্ণ হিসাবে গণনা করা হয়, এবং সেইজন্য একটি ব্যঞ্জনবর্ণ।

ওয়েলশ বর্ণমালার অন্যান্য অক্ষরগুলি স্বরযুক্ত, নীচে তালিকাভুক্ত:

a e i o u w y

নীচে দেখুন, বাম দিকের মূল বর্ণ এবং ডানদিকে ফলস্বরূপ পরিবর্তিত অক্ষরগুলির সাথে সমস্ত মিউটেশন:

Original | Mutations
---------+---------------
p        | b mh ph
t        | d nh th
c        | g ngh ch
b        | f m
d        | dd n
g        | [no letter] ng
m        | f
ll       | l
rh       | r

এখানে, এর [no letter]অর্থ হ'ল জি শব্দের শুরু থেকে সরানো হয়েছে।

লক্ষ্য করুন যে কিছু ব্যঞ্জনবর্ণ রয়েছে যা পরিবর্তিত হয় না:

ch
dd
f
ff
j
l
n
ng
ph
r
s
th

শব্দের শুরুতে স্বরগুলিও পাওয়া যেতে পারে তবে রূপান্তর করবেন না:

a
e
i
o
u
w
y

উদাহরণ

ইনপুট: dydd

আউটপুট:

dydd
ddydd
nydd

ইনপুট: pobl

আউটপুট:

pobl
bobl
mhobl
phobl

ইনপুট: gwernymynydd

আউটপুট:

gwernymynydd
wernymynydd
ngwernymynydd

ইনপুট: ffrindiau

আউটপুট:

ffrindiau

ইনপুট: enw

আউটপুট:

enw

ইনপুট: theatr

আউটপুট:

theatr

আর্টঅফকোডের অনুরোধে;)

ইনপুট: llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch

আউটপুট:

llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
lanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch

বিধি

ইনপুটটি কেবলমাত্র একটি শব্দ থাকবে।

আপনার ইনপুটটিতে শীর্ষস্থানীয় ব্যঞ্জনবর্ণের পরে সর্বদা আরও অক্ষর থাকবে।

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


5
নতুন পরীক্ষার কেস:llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch
আর্টঅফকোড

আরেকটি পরীক্ষার মামলা theatr; tপরিবর্তন ঘটায় কিন্তু thহয় না।
আন্তি হাপাল

'গল্ফ ওয়াই সিড' হওয়া উচিত - 'yr' কেবল স্বরবর্ণের আগে আসে, আপনি ব্যঞ্জনবর্ণের আগে 'y' ব্যবহার করেন।
গ্যারেথ

ওয়েলশ ভাষায় মিউটেশন সম্পর্কিত জটিল বিধিগুলির বিষয়ে যদি কেউ আগ্রহী হন তবে 'অ্যাপ ট্রিগলো' নামে একটি অ্যাপ রয়েছে যা নিয়ম দেয় এবং নিম্নলিখিত শব্দের পরিবর্তনের জন্য অনেক শব্দের তালিকাভুক্ত করে।
গ্যারেথ

@ বিটা ক্ষয় হ্যাঁ, গত ৫ বছর ধরে। আমার পাপের জন্য এর আগে ছড়া।
গ্যারেথ

উত্তর:


5

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

x=>x.replace(/^([cpt](?!h)|d(?!d)|[bgm]|ll|rh)(.+)/,(_,y,z)=>({p:"b mh ph",t:"d nh th",c:"g ngh ch",b:"f m",d:"dd n",g:" ng",m:"f"}[y]||y[0]).split` `.map(b=>a.push(b+z)),a=[x])&&a

স্ট্রিংগুলির অ্যারে হিসাবে আউটপুট এটি আমার প্রথম চেষ্টা, সুতরাং এটি প্রায় অবশ্যই অনুকূল নয়।

চেষ্টা কর


এটি সর্বোত্তম নয়, তবে আমার পিসি নিজেই স্যুইচ অফ করার সিদ্ধান্ত নিয়েছে এবং আমি কী অপ্টিমাইজেশন করতে পেরেছি তা আর মনে নেই।
নীল

4

সি #, 356 338 360 বাইট

আমি জানি যে সি # কোড গল্ফের জন্য একটি দুর্বল পছন্দ, তবে এটি শট করার জন্য মূল্যবান:

তৃতীয় প্রয়াস, সমস্ত ক্ষেত্রে এখন পাস হয়, ইত্যাদি ph ইত্যাদি এই সমন্বয়টির জন্য প্রায় 18 বাইট খরচ হয়।

টিপস 24 বাইট সংরক্ষণের জন্য গোলাপিফ্লোয়েডএক্স 33 ধন্যবাদ!

namespace System{using Linq;using S=String;class P{static void Main(S[]a){Action<S>w=Console.WriteLine;w(a[0]);foreach(S r in"th-dd-ch-ph-p.b.mh.ph-t.d.nh.th-c.g.ngh.ch-b.f.m-d.dd.n-g..ng-m.f-ll.l-rh.r".Split('-')){var b=r.Split('.');if(a[0].StartsWith(b[0])){foreach(S f in b.Skip(1))w(Text.RegularExpressions.Regex.Replace(a[0],$"^{b[0]}",f));break;}}}}}

আউটপুট

$> ./p gwernymynydd
gwernymynydd
wernymynydd
ngwernymynydd

ফর্ম্যাট সংস্করণ

    namespace System {
    using Linq;
    using S = String;

    class P {
        static void Main(S[] a) {
            Action<S> w = Console.WriteLine;
            w(a[0]);
            foreach (S r in "th-dd-ch-ph-p.b.mh.ph-t.d.nh.th-c.g.ngh.ch-b.f.m-d.dd.n-g..ng-m.f-ll.l-rh.r"
                .Split('-')) {
                var b = r.Split('.');
                if (a[0].StartsWith(b[0])) {
                    foreach (S f in b.Skip(1))
                        w(Text.RegularExpressions.Regex.Replace(a[0], $"^{b[0]}", f));
                    break;
                }
            }
        }
    }
}

1
$"{f}"খালি হওয়া উচিত f, আপনি প্রথম কলটি লাইনের পাশাপাশি সেভ করতে পারবেন, খ-তে প্রথম উপাদানটি এড়িয়ে না গিয়ে (পাশাপাশি স্কিপ সংরক্ষণ করে) এবং প্রথম আইটেমটি নিজের সাথে প্রতিস্থাপন করে (আমার মনে হয়)। আপনি কেবলমাত্র রেগেক্সে একটি কল করেন যাতে ক্যাচিং / নাম পরিবর্তন করে কেবল Text.RegularExpressions.Regex.Replace(...)শরীরের চেয়ে বেশি খরচ হয় । বিরতিটি
অতিমাত্রায়ও

1
গল্ফের জন্য ভাষার কোনও দুর্বল পছন্দ নেই - আপনি অন্য যে কেউ একই ভাষাতে চেষ্টা করতে এবং মারতে চান তার বিরুদ্ধে প্রতিদ্বন্দ্বিতা করছেন। প্লাস সি # একবার জন
স্কিটির

@ পিঙ্কফ্লোয়েডএক্স 33 টিপসের জন্য ধন্যবাদ! তবে আমি প্রথম কনসোলটি অপসারণ করতে পারছি না rite রাইটলাইন কল কারণ এটির কোনও প্রতিস্থাপনের ক্ষেত্রে শব্দটি আউটপুট দেওয়া ছাড়বে। আমি নিশ্চিত যে শর্তটি পরিবর্তন করে এটি কীভাবে অনুকূল করা যায় তার একটি উপায় আছে।
গ্রিজলি

আমি কেবল কেসটি দেখেছি theatrএবং দেখে মনে হচ্ছে এটি সঠিকভাবে পরিবর্তিত হচ্ছে না।
গ্রিজলি

হ্যাঁ এমন বেশ কয়েকটি পরীক্ষার কেস রয়েছে যা এই মুহূর্তে পাস হয় না কারণ পিএইচ, টিএইচ, সিএইচ এবং ডিডি রূপান্তরিত হয় না
গোলাপিফ্লোয়েডএক্স 33

3

পাইথন 3, 196,189 185 বাইট

আসল প্রয়াস

w=input();print(w);[w.startswith(a)and[print(w.replace(a,i,1))for i in
r]+exit()for(a,*r)in(j.split(',')for j
in'th rh ph p,b,mh,ph t,d,nh,th c,g,ngh,ch b,f,m d,dd,n g,,ng m,f ll,l rh,r'.split())]

ভোল্টাহ উল্লেখ করেছেন যে এটির not w.find(a)জন্য প্রতিস্থাপন w.startswith(a)হবে ২ টি চরিত্র সংরক্ষণ করা। তবে এর পরিবর্তে not x and yআমরা ব্যবহার করতে পারি x or yযা কিছু অক্ষরকে আরও সংরক্ষণ করে:

w=input();print(w);[w.find(a)or[print(w.replace(a,i,1))for i in
r]+exit()for(a,*r)in(j.split(',')for j
in'th rh ph p,b,mh,ph t,d,nh,th c,g,ngh,ch b,f,m d,dd,n g,,ng m,f ll,l rh,r'.split())]

প্রতিস্থাপন তবুও আরও সঞ্চয়ী w.replace(a,i,1)সঙ্গে i+w[len(a):]:

w=input();print(w);[w.find(a)or[print(i+w[len(a):])for i in
r]+exit()for(a,*r)in(j.split(',')for j
in'th rh ph p,b,mh,ph t,d,nh,th c,g,ngh,ch b,f,m d,dd,n g,,ng m,f ll,l rh,r'.split())]

তারপরে আমি লক্ষ্য করেছি যে একটি বাগ রয়েছে, rhদুবার তালিকাভুক্ত হয়েছিল; আমার শর্ট সার্কিট তালিকায় একবারে সেই ডাবল-অক্ষরের ব্যঞ্জনাময়দের যত্ন নেবে। দুর্ভাগ্যক্রমে ddসেখান থেকে নিখোঁজ ছিল, সুতরাং কোনও সঞ্চয় নেই, এবং আমাদের রয়েছে

w=input();print(w);[w.find(a)or[print(i+w[len(a):])for i in
r]+exit()for(a,*r)in(j.split(',')for j
in'th ph dd p,b,mh,ph t,d,nh,th c,g,ngh,ch b,f,m d,dd,n g,,ng m,f ll,l rh,r'.split())]

নমুনা ইনপুটগুলির কোনও দেওয়া, এটি পছন্দসই আউটপুট দেয়; প্রদত্ত

gorsaf

এটা আউটপুট

gorsaf
orsaf
ngorsaf

এবং প্রদত্ত ইনপুট

theatr

এটি প্রিন্ট করে

theatr

3

পাওয়ারশেল v3 +, 254 231 বাইট

param($a)$a;$z=-join$a[1..$a.length]
if(($x=@{112='b mh ph';116='d nh th';99='g ngh ch';98='f m';100='dd n';109='f'})[+$a[0]]-and$a-notmatch'^[cpt]h|^dd'){-split$x[+$a[0]]|%{"$_$z"}}
($z,"ng$z")*($a[0]-eq103)
$z*($a-match'^ll|^rh')

আরও গল্ফ কাজ করছেন ...

উদাহরণ

(আউটপুট স্পেস-বিভক্ত কারণ স্ট্রিংফাইড অ্যারেগুলির জন্য এটি ডিফল্ট আউটপুট ফিল্ড বিভাজক testing

PS C:\Tools\Scripts\golfing> 'dydd','pobl','gwernymynydd','ffrindiau','enw','rhee','llewyn','chern','ddydd','phobl'|%{"$_ --> "+(.\golff-yr-cod.ps1 $_)}
dydd --> dydd ddydd nydd
pobl --> pobl bobl mhobl phobl
gwernymynydd --> gwernymynydd wernymynydd ngwernymynydd
ffrindiau --> ffrindiau
enw --> enw
rhee --> rhee hee
llewyn --> llewyn lewyn
chern --> chern
ddydd --> ddydd
phobl --> phobl

1

সি #, 349 বাইট

@ গ্রিজলির জমা দেওয়ার উপর ভিত্তি করে , তবে রূপান্তরিত হয় না এমন ব্যঞ্জনবর্ণের সাথে কাজ করার জন্য সংশোধন করেছেন (পিএইচ / সিএইচ / থ্রি / ডিডি) যে এটি কাজ করছে না, কিছুটা অতিরিক্ত ছাঁটাই করেছে। আশা করি ঠিক আছে?

আমি 290-এ নেমে এসেছি যতক্ষণ না বুঝে যে আমি th / ch / ph / dd কেস মিস করছি :-(। রেজেক্স কলটিতে যোগ দেওয়ার ফলে এটি মারা গেছে

namespace System{class P{static void Main(string[]a){var x=a[0];if(!Text.RegularExpressions.Regex.IsMatch(x,"^[pct]h|^dd"))foreach(var r in"p.b.mh.ph-t.d.nh.th-c.g.ngh.ch-b.f.m-d.dd.n-g..ng-m.f-ll.l-rh.r".Split('-')){var b=r.Split('.');if(a[0].StartsWith(b[0]))for(int i=1;i<b.Length;)x+='\n'+b[i++]+a[0].Substring(b[0].Length);}Console.Write(x);}}}

আকর্ষণীয় দ্রষ্টব্য, কখনই জানতেন না যে আপনি মধ্যবর্তী স্থানটি বাদ দিতে পারেন var r in"string"

বিন্যাসকৃত:

namespace System
{
    class P
    {
        static void Main(string[] a)
        {
            var x = a[0];
            if (!Text.RegularExpressions.Regex.IsMatch(x, "^[pct]h|^dd"))
                foreach (var r in"p.b.mh.ph-t.d.nh.th-c.g.ngh.ch-b.f.m-d.dd.n-g..ng-m.f-ll.l-rh.r".Split('-'))
                {
                    var b = r.Split('.');
                    if (a[0].StartsWith(b[0]))
                        for (int i = 1; i < b.Length;) x += '\n' + b[i++] + a[0].Substring(b[0].Length);
                }
            Console.Write(x);
        }
    }
}

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