ফ্ল্যাপাস গ্রহে ব্যবহৃত সংখ্যার কথ্য নামগুলি আউটপুট দিন


24

ফ্ল্যাপাসের বাসিন্দারা বেস -8 নম্বর সিস্টেমটি ব্যবহার করেন। সংখ্যাগুলি হ'ল:

0 - কুজলা
1 - পোনারা
2 - বোক্কেল
3 - কলিপি
4 - ভ্রুনাট
5 - ফোহাম
6 - স্টিকিটি
7 - ক্রিকোলা

Over এর বেশি সংখ্যার জন্য, শেষ অঙ্কের পুরো নামটি প্রথমে আসে, তারপরে অ্যাস্টোস্ট্রোফ এবং অন্য অঙ্কের (গুলি) এর প্রথম অক্ষর, প্রথম স্বর পর্যন্ত এবং সহ:

11 - পোনারা (1) 'পো (1)
13 - কলিপি (3)' পো (1)
64 - ভ্রূনিয়েটি
55 - ফোহামফো
47 - ক্রিকোলাভ্রু

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

123 - কলিপি (3) 'পো (1) বো (2)
205 - ফোহাম (5)' বো (2) কু (0)
1123 - কোলোপি'পোপো 7654
- ভ্রুনাট'ক্রিস্টিফো

নিয়মের ব্যতিক্রমটি 0 এ শেষ হওয়া সংখ্যার জন্য is এখানে শব্দটি কু থেকে শুরু হয় এবং প্রথম স্বর পর্যন্ত এবং অন্যান্য সংখ্যার প্রথম অক্ষর দিয়ে সম্পূর্ণ হয়। কোনও অ্যাস্টোস্ট্রোফ ব্যবহার করা হয় না।

10 - কুপো
70 - কুকরি
350 - কুকোফো
630 - কাস্টিকো
1000 - কুপোকুকু

চ্যালেঞ্জ

এমন কোনও প্রোগ্রাম বা ফাংশন লিখুন যা একটি বৈধ বেস -8 নম্বর গ্রহণ করে এবং কথ্য সমতুল্যকে আউটপুট করে। আপনি ধরে নিতে পারেন আপনি সর্বদা একটি বৈধ নম্বর পাবেন। আপনার উত্তর ঠিক হওয়ার পরে হোয়াইটস্পেস / একক নতুন লাইন অনুসরণ করা। উদাহরণ হিসাবে প্রথম চরিত্রটি বড় হাতের হওয়া দরকার।

এটি । বাইটস মধ্যে সংক্ষিপ্ত কোড। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য। যার দৈর্ঘ্য রূপান্তরিত হয় এবং ফ্লাপুশিয়ানগুলিতে অতিরিক্ত জমা দেওয়া উত্তরগুলি অতিরিক্ত কুকিজ পান।

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

0 -> কুজলা
1 -> পোনারা
2 -> বোক্কেল
3 -> কলপি
4 -> ভ্রুনাট
5 -> ফোহাম
6 -> স্টিক্টি
7 -> ক্রিকোলা
10 -> কুপো
11 -> পোনারা'পো
23 -> কলপি'বো
56 - > স্টিকিটিফো
70 -> কুকরি
100 -> কুপোকু
222 -> বোক্কেল'বোবো
2345 -> ফোহাম'বোকোভ্রু


3
এখন যেহেতু আমি এটি মনে করি, সংখ্যাগুলি সমস্ত সুন্দর সুন্দর বলে মনে হয়
22uk

উত্তর:


4

পাইথ, 117 বাইট (ক্রোকোলাপোপো)

Jc"Ku Po Bo Co Vru Fo Sti Kri";K+kc"nara qkel lopee enat ham kty cola";=TsezIszp@JTp@KTp?&T>sz7\'kVPzpr@JsN0;.?"Kuzla

পাইথোনিক সিউডোকোডে হাতে স্থানান্তরিত:

                                           z = input()      # unevaluated, raw
                                           k = ""
Jc"Ku Po Bo Co Vru Fo Sti Kri";            J = "Ku Po...Kri".split()
K+kc"nara qkel lopee enat ham kty cola";   K = k + "nara...cola".split() # k casted to [""]
=Tsez                                      T = int(end(z))  # end(z) means z[-1]
Isz                                        if int(z):
  p@JT                                         print(J[T])
  p@KT                                         print(K[T])
  p?&T>sz7\'k                                  print("'" if T and s > z else k)
  VPz                                          for N in z[:-1]:  # P(z) is z[:-1]
    pr@JsN0                                        print(J[int(N)].lower())
.?                                         else:
  "Kuzla                                       print("Kuzla")

চমৎকার কাজ! if ... elseনিজের forলুপটিকে একটি mapঅপারেশনে পরিবর্তন করে এবং তারপরে কিছুটা ছোটখাট পরিবর্তন করে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন your আমি যা পেয়েছি তা এখানে । আমিও আপনার দৃষ্টি আকর্ষণ করব ."যা সংকুচিত স্ট্রিংয়ের জন্য ব্যবহার করা যেতে পারে।
FryAmTheEggman

@ ফ্রাইআম দ্য এজিগম্যান সম্পর্কে আমি সচেতন ছিলাম। "তবে আমি সম্পূর্ণরূপে আশা করিনি যে এটি প্রথম স্ট্রিংটি সংকুচিত করতে পারে!
বাসুকসুয়ান

10

রেটিনা , কলিপিপোক্রি, 165 157 143 127 123 বাইট

(.+)(.)
$2'$1
0
Kuzla
1
Ponara
2
Boqkel
3
Colopee
4
Vruenat
5
Foham
6
Stikty
7
Kricola
(?<='.*[iou])[a-z]+

T`L`l`'.+
zla'

পেছনের লাইনফিডটি তাৎপর্যপূর্ণ।

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

ব্যাখ্যা

(.+)(.)
$2'$1

আমরা পেছনের অঙ্কটি সামনে আনতে এবং এর পরে অ্যাডোস্ট্রোফ byুকিয়ে শুরু করি। দ্রষ্টব্য যে এটি একক-অঙ্কের সংখ্যাগুলি অপরিবর্তিত রাখে, যেহেতু রেজেক্সটি মেলে না - তাই যারা কখনও প্রথম স্থানে অ্যাস্টোস্ট্রোফ পায় না।

0
Kuzla
1
Ponara
2
Boqkel
3
Colopee
4
Vruenat
5
Foham
6
Stikty
7
Kricola

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

(?<='.*[iou])[a-z]+

এটি অ্যাডোস্ট্রোফের পরে প্রদর্শিত সমস্ত অঙ্কের নাম সংক্ষিপ্ত করে। মনে রাখবেন যে কেবল স্বরগুলি iouপ্রথমে অঙ্কের নামের সাথে উপস্থিত হয়, সুতরাং আমরা সেই অবস্থানটি যাচাই করেছিলাম তার মধ্যে একটির পরে এবং একটি অ্যাডোস্ট্রোফের পরে এবং তারপর সেই অবস্থান অনুসরণকারী সমস্ত ছোট অক্ষরের সাথে মিল (এবং অপসারণ) করি। যেহেতু আমরা শিরোনামের ক্ষেত্রে অঙ্কের নামগুলি সন্নিবেশ করিয়েছি, এটি পরবর্তী অঙ্কের আগে বন্ধ হয়ে যাবে।

T`L`l`'.+

এটি লিখিতভাবে সমস্ত অক্ষরের অক্ষরগুলিকে, Lতাদের লোয়ার কেস অংশে রূপান্তর করতে ব্যবহার করে l, তবে শর্ত থাকে যে তারা একটি ম্যাচেই শুরু হয় যা শুরু করে '(শীর্ষস্থানীয় মূলধনটি ছোঁয়াতে না দিয়ে)।

zla'

কেবলমাত্র অবশিষ্ট জিনিসটি হ'ল সঠিকভাবে (অষ্টাল) 10 এর বহুগুণ পরিচালনা করা that সেক্ষেত্রে আমাদের একটি ফলাফল শুরু হবে Kuzla', যা আমরা Kuপরিবর্তে শুরু করতে চাই । সুতরাং আমরা কেবল সমস্ত ঘটনাকে সরিয়ে ফেলি zla'


আমি রেফ্যাক্টর হয়েছি এবং আপনার রেজেক্স পদ্ধতির ব্যবহার করেছি - 10 বাইট সংরক্ষণ করে! আমার জাভা সমাধানের বাইরে আমি আরও অনেক কিছু কড়াতে পারি বলে আমি মনে করি না। তবু তোমার থেকে কয়েক মাইল দূরে!
ডেনহাম কোট

4

জাভাস্ক্রিপ্ট (ES6), 171

n=>(x='Kuzla Ponara Boqkel Colopee Vruenat Foham Stikty Kricola ku po bo co vru fo sti kri'.split` `,r=x[d=+(n=[...n]).pop()],n.map(d=>r+=x[+d+8],n[0]?r=d?r+"'":'Ku':0),r)

পরীক্ষা

F=n=>(
  x='Kuzla Ponara Boqkel Colopee Vruenat Foham Stikty Kricola ku po bo co vru fo sti kri'.split` `,
  r=x[d=+(n=[...n]).pop()],
  n.map(d=>r+=x[+d+8],n[0]?r=d?r+"'":'Ku':0),
  r
)  


console.log=x=>O.textContent+=x+'\n'

o=''
for(i=0;i<999;i++)
  o+=i.toString(8) +':'+ F(i.toString(8))+(i%8!=7?' ':'\n')
console.log(o)
#O { font-size:12px }
<pre id=O></pre>


4

জাভা (1.8) - ভ্রুণাত'ফোবো ( 486 340 বাইট)

ঠিক যখন আমি ভেবেছিলাম যে আমি সম্ভবত এটি আর গল্ফ করতে পারি না, তখন আমি আরও 33 বাইট পেয়েছি! খুব সন্তুষ্ট! সর্বাধিক সঞ্চয়টি ছিল চারটি অ্যারেগুলিতে স্যুইচ করা (ছোট / উচ্চ থেকে ছোট / ছোট) এবং শব্দের জন্য ইনপুট স্ট্রিং অ্যারে পুনরায় ব্যবহার করা।

লোড গল্ফিং ট্রিকস আবিষ্কার করছে, নিচে 400 এর নিচে! তাত্ত্বিকভাবে আমি এখনও এটিকে আরও কমাতে পারলাম, যেমন আমি বলেছিলাম যে কোনও ফাংশন নিয়মের মধ্যে ঠিক আছে, যদিও এটি একটি সম্পূর্ণ প্রোগ্রাম।

মার্টিন বাটনার এর পদ্ধতির সাহায্যে আপডেট হয়েছি, আমি পরিবর্তে রেজেেক্স ব্যবহার করতে রিফেক্টর করেছি। আরও 10 টি বাইট সংরক্ষণ করার ব্যবস্থা করা! ধন্যবাদ মার্টিন

interface F{static void main(String[]n){String t="",o,a=n[0];n="Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split(",");int i=0,l=a.length()-1;char f=a.charAt(l);o=n[f-48]+(l>0?"'":"");while(i<l)t+=n[a.charAt(i++)-48];o+=t.replaceAll("(?<=.*[iou])[a-z]+","").toLowerCase();if(f==48)o=o.replace("zla'","");System.out.print(o);}}

Ungolfed

interface Flapus {
static void main(String[] names) {
    String temp="",out, a = names[0];
    names = "Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split(",");
    int i=0, last = a.length()-1;
    char lastchar = a.charAt(last);

    out=names[lastchar-48]+(last>0?"'":"");
    while(i<last) {
        temp+=names[a.charAt(i++)-48];
    }
    out+=temp.replaceAll("(?<=.*[iou])[a-z]+", "").toLowerCase();
    if (lastchar==48) {
        out=out.replace("zla'","");
    }
    System.out.print(out);
}
}

1
আপনি interface Fপ্রধান পদ্ধতিতে প্রকাশ্য ঘোষণাটি ব্যবহার এবং মুছে ফেলতে পারেন । আপনি স্থানটি ভিতরে String[] xএবং ভিতরেও সরাতে পারেন .substring(0, v+1)
অ্যাডিসন ক্রম্প 9

1
আপনি বিভক্ত স্ট্রিং থেকে অ্যারে তৈরি করে আরও কিছু বাইট সংরক্ষণ করতে পারেন: "Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split(",")70০ বাইট, যখন ইনলাইন অ্যারে
হারুন

আমি যতটা চেষ্টা করতে পারি চেষ্টা করুন, আমি এর চেয়ে আরও শক্ত করে গল্ফ করতে পারি না। এর বাইরে আরও টিপস সহ কেউ আছেন?
ডেনহাম কোট

3

পাইথন (3.5) 225 222 217 202 বাইট

পাইথনে তালিকা বোঝার সাথে একটি কার্যক্ষম সমাধান solution

s=input()
d="Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split(',')
r=d[int(s[-1])]+"'"if s[-1]!='0'else'Ku'
d=[i[:2+(i[2]in'ui')].lower()for i in d]
for i in s[:-1]:r+=d[int(i)]
print(r)

ব্যাখ্যা

d="Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split(',')

বিভক্ত সংস্করণ (3 টি পূর্ববর্তী সংস্করণ d="Kuzla","Ponara",...) সহ 3 বাইট জিতুন

r=d[int(s[-1])]+"'"if s[-1]!='0'else'Ku'

শেষ অঙ্কের ফাংশনে ফলাফলের সূচনা

d=[i[:2+(i[2]in'ui')].lower()for i in d]

প্রথম 2 বা 3 টি অক্ষর রাখার জন্য d তালিকাটি পরিবর্তন করুন এবং ছোট ক্ষেত্রে রাখুন

for i in s[:-1]:r+=d[int(i)]

স্ট্রিং বিড়াল


1
2345 ফোহাম'বোকোভারকে ফেরত দেয়। এটি ফোহাম'বোকোভ্রুকে ফিরিয়ে দেওয়া উচিত। এটি হ'ল কারণ আপনি প্রথম স্বর পর্যন্ত এবং কেবল দুটি অক্ষরই পড়ছেন। পেস্কি ভ্রুণাত
ডেনহাম

'স্টিকি' এবং 'ক্রিকোলার' জন্য একই সমস্যা
ডেনহাম

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

2

জাভাস্ক্রিপ্ট ES6, 231 228 225 222 204 বাইট

a=[...prompt(c="Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split`,`)];b=c[a.pop()];a.length?b=b==c[0]?"Ku":b+"'":0;for(;a.length;)b+=c[a.shift()].match(/.+?[iou]/)[0].toLowerCase();alert(b)

নীলকে ধন্যবাদ দিয়ে একগুচ্ছ বাইটস সংরক্ষণ করে।


1
সাধারণ গল্ফিং টিপস: [...s]পরিবর্তে s.split``; b=b==c[0]?"Ku":b+"'"পরিবর্তে if(b==c[0]){b="Ku"}else b+="'"; একইভাবে if(a.length)(কেবলমাত্র অংশটির 0জন্য ব্যবহার করুন else); a.map(d=>b+=c[d].match...)পরিবর্তে forএবং সাথে ঘুরপাক খাওয়া shift। আমি মনে করি এটি ইতিমধ্যে 29 বাইট সংরক্ষণ করা হয়েছে।
নীল

অন্য কারও উত্তরের দিকে তাকাতে পরামর্শ দেয় আপনি আরও 2 বাইট সংরক্ষণ করতে পারবেন কারণ আপনাকে কেবল [iou]আপনার "স্বর" শ্রেণি হিসাবে ব্যবহার করতে হবে ।
নীল

@ নীল ধন্যবাদ আমি এটা করবো.
সুপারজেডি ২৪

2

এফ #, 364 288 250 বাইট (কুবুফো)

let M="Ku-Ponara-Boqkel-Colopee-Vruenat-Foham-Stikty-Kricola".Split '-'
let m="Ku-Po-Bo-Co-Vru-Fo-Sti-Kri".Split '-'
let rec r a=function|0->a|i->r(m.[i%10].ToLower()::a)(i/10)
fun i->String.concat""<|M.[i%10]::((if(i%10)=0 then""else"'")::r[](i/10))

একটি পূর্ণসংখ্যা গ্রহণ করে এবং এর ফ্ল্যাপাস সমতুল্য ফিরিয়ে দেয় এমন একটি ফাংশন প্রদান করে। = D:


1

পাইথন 3 - 181 177 বাইট (পোনারা'বোস্টি)

a='Ku Po Bo Co Vru Fo Sti Kri zla nara qkel lopee enat ham kty cola'.split()
*y,x=map(int,input())
u=x>0
v=y>[]
print(a[x]+a[x+8]*u**v+"'"*(u&v)+''.join(a[i].lower()for i in y))

আপনার সবচেয়ে আশ্চর্যজনক ব্যবহার থেকে সাবধান থাকুন powআপনার পুরো জীবনে কখনই তা দেখা যাবে। u**vবুলিয়ান প্রসঙ্গে সমান u|(not v)যেটি আগে সুন্দর ~v+2|uঅভিব্যক্তিতে গল্ফ হয়েছিল !

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