আমি ধাঁধা প্রোগ্রামিং, ইল কোড গল্ফ


21

পটভূমি

ইতালীয় নির্দিষ্ট আর্টিকল (ইংরেজি সংশ্লিষ্ট ) সাত বিভিন্ন ফর্ম আছে L ' , মাস , দেখ , GLI , আমি , লা , Le । কোনটি ব্যবহার করবেন তা তিনটি ভেরিয়েবলের উপর নির্ভর করে:

  • লিঙ্গ: পুংলিঙ্গ / স্ত্রীলিঙ্গ।
  • সংখ্যা: একক / বহুবচন
  • পরবর্তী শব্দের প্রাথমিক চিঠি: স্বর / ব্যঞ্জনধ্বনি টাইপ এ / ব্যঞ্জনবর্ণের প্রকার বি।
    • স্বর এইগুলির মধ্যে যে কোনও একটি: আইওউ
    • ব্যঞ্জনবর্ণের ধরণের বি এর মধ্যে যে কোনও একটি: এস- এর পরে অন্য ব্যঞ্জনবর্ণ, z- , gn- , pn- , PS- , x- , i- এর পরে স্বর হয় (এটি আমি সেমিওয়েলের হিসাবে কাজ করে)।
    • ব্যঞ্জনবর্ণ টাইপ এ এমন একটি ব্যঞ্জনবর্ণ যা বি টাইপ নয় is

টেবিলটি উপরের তিনটি ভেরিয়েবলের বারোটি সংমিশ্রণের প্রতিটিটিতে ব্যবহার করার জন্য নিবন্ধের ফর্মটি দেখায়। মনে রাখবেন যে l ' ফর্মটি একটি শব্দের সাথে এবং একটি স্থান ছাড়াই নীচের শব্দের সাথে সংযুক্ত।

এখানে চিত্র বর্ণনা লিখুন

চ্যালেঞ্জ

একটি শব্দ এবং এক বা দুটি স্ট্রিং, সংখ্যা বা লিঙ্গ এবং সংখ্যা নির্দেশ করে বুলিয়ান ইনপুট করুন । (প্রাথমিক অক্ষরগুলি ইনপুট শব্দ থেকে প্রাপ্ত করতে হবে)।

ইনপুট শব্দটি ছোট হাতের ASCII অক্ষরের ক্রম হবে। প্রস্বরিত স্বরবর্ণ (উদাহরণস্বরূপ, তাদের অ স্বরাঘাত সংস্করণ দ্বারা প্রতিস্থাপন করা হবে বাস্তবতা হিসাবে ইনপুট হতে হবে বাস্তবতা )।

লিঙ্গ এবং সংখ্যার ইনপুটগুলি পৃথক সংখ্যা, বুলিয়ান বা স্ট্রিং বা স্ট্রিংয়ের সংযুক্ত সংখ্যক সংখ্যা হতে পারে (উদাহরণস্বরূপ, 1 পুংলিঙ্গ একবচনের জন্য 1, স্ত্রীলিঙ্গ একবচনের জন্য 2 ইত্যাদি)।

যে কোনও যুক্তিসঙ্গত বিন্যাস এবং বিভাজক ব্যবহার করা যেতে পারে, যতক্ষণ তা উত্তরে নির্দিষ্ট করা থাকে।

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

কোড গল্ফ, সংক্ষিপ্ততম জয়।

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

নিম্নলিখিত আমি ইনপুট অক্ষর ব্যবহার ইন m, fলিঙ্গ নির্দিষ্ট করতে, এবং s, pসংখ্যার জন্য (এই মাত্র এক সম্ভাব্য ইনপুট ফরম্যাট)।

Input               Output              Comment

macchina f s        la macchina         Initial letter is cons. A
zio m s             lo zio              Initial letter is cons. B
libri m p           i libri             Initial letter is cons. A
ieri m s            lo ieri             Initial letter is cons. B
aquile f p          le aquile           Initial letter is vowel
spagnoli m p        gli spagnoli        Initial letter is cons. B
golf m s            il golf             Initial letter is cons. A
ombra f s           l'ombra             Initial letter is vowel
impossibili m p     gli impossibili     Initial letter is vowel

আপনি নিয়মিত ক্রিয়াগুলির সংমিশ্রণ সম্পর্কেও চ্যালেঞ্জ তৈরি করতে চাইতে পারেন।
ব্যবহারকারী 6245072

@ ইউজার 6245072 ঠিক আছে, ইতিমধ্যে এটি আছে ... পার্থক্যটি সম্ভবত খুব ছোট হবে
লুইস মেন্ডো

1
একটি গৌণ প্রযুক্তিগত নিগল: / জে / সাধারণত ইংরেজীতে সেমিভোয়েল নামে পরিচিত , সেমিকাসন্যান্ট নয় । আমি ভাবছি যে সমাধানগুলি কী হবে যদি তারা [কে] ( লো শেফ , লো চারডননে ) এর চেয়ে [কে] ( লো শেফ , লো চারডননে ) এর চেয়ে প্রকারের ক্ষেত্রে যেমন factorch⟨ উপস্থাপন করে [ʃ] , ফরাসী নামগুলির সাথে পরিবর্তনের ( এল'হ্যাভেট তবে লো হুগো ), জীবাশ্ম ফর্ম ( gli dei , প্রতি লো মেনো ), মহিলারা তাদের শেষ নাম দ্বারা উল্লেখ করা হয় ( l'Antonia কিন্তু লা আন্তোনিনি ), ইত্যাদি। এটি গল্ফ-কোডের জন্য যথেষ্ট দুর্গম বিষয় হবে।
জানুস বাহস জ্যাকেট

1
ইতালিয়ান হিসাবে আমি আপনাকে ieriপরীক্ষার কেসটি বন্ধ করতে বলি কারণ এটি একটি বিশেষণ এবং বিশেষ্য নয়! (বিটিডব্লিউ এটি আনুষ্ঠানিকভাবে সঠিক ছিল) দয়া করে!
গিয়াকোমো গারাবেলো

1
আমরা usally বলে, "অ pensare একটি ieri, Pensa একটি Domani থেকে"
Giacomo, Garabello

উত্তর:


7

রেটিনা, 138 133 129 113 বাইট

^.(s[^aeiou]|z|gn|pn|ps|x|i[aeiou])
B$&
^.[aeiou]
V$&
^\d.
A$&
V[02]
l'
A0
il 
B0
lo 
A1
i 
.1
gli 
.2
la 
.3
le 

পরীক্ষা স্যুট. ( %(G`\nএকবারে সমস্ত টেস্ট-কেস চালানোর জন্য প্রস্তুত)

ইনপুট ফর্ম্যাট: পরিবর্তে macchina f sহয়ে যায় 2macchina

0: Masculine Singular
1: Masculine Plural
2: Feminine Singular
3: Feminine Plural

রূপান্তর টেবিল কেভিন লউ ধন্যবাদ ।


4

পাইথন 3.5, 238 235 192 181 178 বাইট:

( -13 লাইট নুনের টিপসকে ধন্যবাদ বাইটস! )

import re;R=re.match;lambda a,b:(R('s[^aeiou]|(z|gn|pn|ps|x|i)[aeiou]',a)and['lo ','gli ','la '][b]or R('[aeiou]',a)and["l'",'gli '][b%2]or['il ','i ','la '][b]if b<3else'le ')+a

একটি বেনাম ল্যাম্বডা ফাংশন যা আকারে আর্গুমেন্ট গ্রহণ করে (<String>, <Integer Gender-Plurality mapping>), ম্যাপিংটি নিম্নরূপ:

0 -> Masculine Singular
1 -> Masculine Plural
2 -> Feminine Singular
3 -> Feminine Plural

এটিকে কল করতে, কেবলমাত্র ফাংশনটিকে কোনও বৈধ নাম দিন এবং তারপরে মুদ্রণ বিবৃতিতে আবৃত একটি সাধারণ ফাংশনের মতো এটি কল করুন। সুতরাং, যদি প্রশ্নের নামকরণ করা হয় তবে Uকেবল এটিকে পছন্দ করুন print(U(<String>, <Integer Gender-Plurality mapping>))

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


zzz and yyy or xxxএর চেয়ে দুটি বাইট সংক্ষিপ্ত[xxx,yyy][bool(zzz)]
লিকি নুন

@ লাকিউন আমি কি এটি করতে পারি? বাহ, আমিও জানতাম না। ধন্যবাদ! :)
আর কাপ 18

এটি যতক্ষণ yyyসত্য ততক্ষণ কাজ করে।
লিকি নুন

@ ল্যাকিয়ুন হ্যাঁ, অবশ্যই
আর কাপ,

["l'",'gli '][b%2]3 বাইটের চেয়ে কম হয়["l'",'gli ',"l'"][b]
লিকি নুন

4

জাভা, 227 208 195 বাইট

-13 বাইট ধন্যবাদ লিকি নুনকে

String f(String a,int o){boolean v=a.matches("^([aeou]|i[^aeiou]).*"),b=a.matches("^([ixz]|gn|pn|ps|s[^aeiou]).*");return(o>1?o>2?"le ":v?"l'":"la ":o>0?v||b?"gli ":"i ":v?"l'":b?"lo ":"il ")+a;}

নীচের ম্যাপিংয়ের উপর ভিত্তি করে আপনার স্ট্রিং এবং ইনট নেয়:

0: Masculine Singular
1: Masculine Plural
2: Feminine Singular
3: Feminine Plural

ফলাফল সহ একটি স্ট্রিং প্রদান করে।

পরীক্ষার মামলাগুলির সাথে এবং কোনও টেরিনারি অপারেটরবিহীন (এখনই বাস্তবের জন্য) অসমাপ্ত:

class Test {

    public static String f(String a, int o) {
        boolean v = a.matches("^([aeou]|i[^aeiou]).*");
        boolean b = a.matches("^([ixz]|gn|pn|ps|s[^aeiou]).*");
        String r;
        if(o > 1)
            if(o > 2)
                r = "le ";
            else
                if(v)
                    r = "l'";
                else
                    r = "la ";
        else
            if(o > 0)
                if(v || b)
                    r = "gli ";
                else
                    r = "i ";
            else
                if(v)
                    r = "l'";
                else if(b)
                    r = "lo ";
                else
                    r = "il ";
        return r + a;
    }

    public static void main(String[] args) {
        System.out.println(f("macchina", 2));
        System.out.println(f("zio", 0));
        System.out.println(f("libri", 1));
        System.out.println(f("ieri", 0));
        System.out.println(f("aquile", 3));
        System.out.println(f("spagnoli", 1));
        System.out.println(f("golf", 0));
        System.out.println(f("ombra", 2));
        System.out.println(f("impossibili", 1));
    }
}

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


1
আমার ... জাভা এর চেয়ে লম্বা ?! আমি গল্ফ আমার কিছুটা তাকাতে হবে! ভাল কাজ যদিও! +1
আর কাপ,

যদি আমাকে কমান্ড লাইন বা স্টিডিন থেকে আমার যুক্তিগুলি গ্রহণ করতে হয়, বিশ্বাস করুন, এটি অনেক বেশি সময় হত: পি

হ্যাঁ, বুলিয়ানরাও গ্রহণ করেছে। আমি এটি সম্পাদনা করেছি
লুইস মেন্ডো

আমি মনে করি আপনি এর 0/1পরিবর্তে ব্যবহার করতে পারেন false/trueযা আপনাকে কিছু বাইট সংরক্ষণ করতে পারে।
লিকি নুন

ব্যবহার না করা String e = "[^aeiou]).*";আপনাকে 5 বাইট সাশ্রয় করে ।
লিকি নুন

3

রুবি, 147 146 বাইট

অনলাইনে চেষ্টা করে দেখুন?

কোন নিবন্ধটি ব্যবহার করবেন তা নির্ধারণের জন্য আরও ভাল পদ্ধতি ব্যবহার করা সম্ভব হতে পারে তবে আমি কোনওটি সম্পর্কে অবগত নই।

অনুমান অনুসারে, শনাক্তকারীটি নীচের মতো একটি সংখ্যা:

0: Masculine Singular
1: Masculine Plural
2: Feminine Singular
3: Feminine Plural

->w,i{(%w"lo gli la le l' gli l' le il i la le"[(0..2).find{|r|[/^(i[aeiou]|s[^aeiou]|z|x|[gp]n|ps)/,/^[aeiou]/,//][r]=~w}*4+i]+' '+w).sub"' ",?'}

2

ব্যাচ, 446 390 385 380 বাইট

@echo off
set w=%2
call:l %1 l' gli_ l' le_ il_ i_ la_ le_ lo_ gli_ le_ le_
exit/b
:l
for /l %%a in (0,1,%1)do shift
set o=%5
for %%a in (gn pn ps)do if %%a==%w:~,2% set o=%9
for %%a in (s z x)do if %%a==%w:~,1% set o=%9
for %%a in (a e i o u)do if %%a==%w:~,1% set o=%1
for %%a in (a e i o u)do if i%%a==%w:~,2% (set o=%9)else if s%%a==%w:~,2% set o=%1
echo %o:_= %%w%

অন্যান্য সংস্করণে 0-3জেন্ডার এবং সংখ্যার জন্য নতুন সংস্করণ একই এনকোডিং ব্যবহার করে। একটি 1-মাত্রিক অ্যারে তৈরি করে কাজ করে %2.. %13ফরম, তারপর প্রথম নাড়াচাড়া 1+%1আগ্রহের ফরম পরিণত তাই উপাদান %1, %5এবং %9(যেমন ব্যাচ উপরে যেতে হবে না যা ভাগ্যের ব্যাপার বৈকি! %9নাড়াচাড়া ছাড়াই)। এরপরে কোন ফর্মটি ব্যবহার করা দরকার তা নির্ধারণ করার জন্য এটি কঠোরভাবে উপসর্গগুলির তালিকা পরীক্ষা করে। _শব্দটি আউটপুট না হওয়া পর্যন্ত কোনও স্থানকে প্রতিনিধিত্ব করতে স্থানধারক হিসাবে ব্যবহৃত হয়।


পাশাপাশি এগুলি একটি একক অঙ্কে এনকোড করাতে পারে (বা চিঠির প্রয়োজন হলে, যেহেতু স্পেক এটি অনুমতি দেয়) বাইটগুলি সংরক্ষণ করতে পারে। বাইটের খাতিরে সব!
মূল্য

@ কেভিনলউ-নোট কেনি ডিজিট এনকোডিংয়ে স্যুইচিংয়ের ফলে লিঙ্গ এবং নম্বর হ্যান্ডলিংয়ের পুনর্লিখনের মাধ্যমে আমাকে একটি বৃহত 56 বাইট সংরক্ষণ করতে দেওয়া হয়েছিল!
নীল

1

পাইথন 3, 235 বাইট

রেজেক্সেস ছাড়াই পাইথনে আমি কীভাবে এটি পেতে পারি তা আগ্রহী ছিলাম। দেখা যাচ্ছে যে এটি সর্বোত্তম বিকল্প নয় ...

lambda s,c,v='aeiou':[["l'",'il','lo'],['gli','i','gli'],["l'",'la','la'],['le']*3][c][[[1,2][s[0]=='s'and s[1]not in v or s[0]in'zx'or s[:2]in['gn','pn','ps']or s[0]=='i'and s[1]in v],0][s[0]in v and not(s[0]=='i'and s[1]in v)]]+' '+s

একটি বেনাম ফাংশন যা শব্দের যুক্তি sএবং লিঙ্গ-নম্বর কোডটি cপূর্ণসংখ্যা হিসাবে ইনপুট নেয় , নিম্নলিখিত ম্যাপিং ব্যবহার করে:

0 - Masculine Singular
1 - Masculine Plural
2 - Feminine Singular
3 - Feminine Plural

এবং সঠিক নিবন্ধ সহ শব্দটি ফেরত দেয়।

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

cপৃথক তালিকা হিসাবে প্রতিটি জন্য সম্ভাবনা সমন্বিত একটি তালিকা তৈরি করা হয়। এরপরে cতালিকাটি প্রাসঙ্গিক বিকল্পগুলির সাথে একটি 3-উপাদান তালিকা প্রদান করে, এর মানটি ব্যবহার করে সূচীভূত হয় । বুলিয়ান এক্সপ্রেশনগুলির ফলাফল সহ অন্য নেস্টেড তালিকায় ইনডেক্স করে একটি তালিকা সূচক বেছে নেওয়া হয়েছে। যদি এর প্রথম অক্ষরটি sএকটি স্বর হয় এবং স্বর iঅনুসরন না করে তবে বিকল্পটি vowelসূচক ফেরতের মাধ্যমে পাওয়া যায় 0। অন্যথায়, একটি বুলিয়ান ফিরে অভিব্যক্তি Trueজন্য cons. Bএবং Falseজন্য cons. Aমূল্যায়ন করা হয়, সূচকের ফলনশীল 2এবং 1যথাক্রমে। পরিশেষে, সূচকটি নিবন্ধটি উত্পাদন করতে ব্যবহৃত হয়, যা প্রত্যাবর্তনের পূর্বে একটি স্থান এবং মূল স্ট্রিং দিয়ে সংযুক্ত হয়।

আইডিয়নে চেষ্টা করে দেখুন


1

জাভাস্ক্রিপ্ট 210 বাইট

(s,p)=>{var c=i=>!("aeiou".indexOf(s[i])+1),r=["z","gn","pn","ps","x"].some(t=>!s.indexOf(t))||(c(1)?s[0]=="s":s[0]=="i")?2:c(0)?1:0;return (p&1?(p&2?"le ":r&1?"i ":"gli "):!r?"l'":p&2?"la ":r&1?"il ":"lo ")+s}

একটি অনামী ফাংশন যেখানে দুটি পরামিতি s এবং p নেওয়া হয়

s  is the input string
p  is plurality (bit 0, set=plural) and gender (bit 1, set=f) combined as
    0 = masculine singular
    1 = masculine plural
    2 = feminine singular
    3 = feminine plural

কোনও ভেরিয়েবল এবং কিছু আনপ্যাকিংয়ের জন্য ফাংশনটি নির্ধারণের পরে, এটি হিসাবে পরীক্ষা করা যেতে পারে

var f=(s,p)=>{
    var c = i=>!("aeiou".indexOf(s[i])+1),
        r = ["z","gn","pn","ps","x"].some(t=>!s.indexOf(t))
             || ( c(1)? s[0]=="s":s[0]=="i" )
             ?   2 : c(0) ? 1 : 0;

     return (p&1?(p&2?"le ":r&1?"i ":"gli "):!r?"l'":p&2?"la ":r&1?"il ":"lo ")+s;
}

console.log("%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
 f("macchina",2),
 f("zio",0),
 f("libri",1),
 f("ieri", 0),
 f("aquile",3),
 f("spagnoli",1),
 f("golf",0),
 f("ombra",2),
 f("impossibili",1))

কোথায়

  • csঅবস্থানটিতে ব্যঞ্জনবর্ণের জন্য পরীক্ষা করার জন্য একটি ফাংশন i
  • r স্বর দিয়ে শুরু করার জন্য 0, একটি টাইপ এ জাতীয় ব্যঞ্জনবর্ণ দিয়ে শুরু করার জন্য 1 এবং বি টাইপ বি ব্যঞ্জনবর্ণের সাথে শুরু করার জন্য 2 টি মূল্যায়ন করে (বিপরীত ক্রমে পরীক্ষিত)।
  • রিটার্ন স্টেটমেন্টে বিট বেশিং এটি একসাথে রাখে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.