দুটি ফিনিশ নামগুলির কেসগুলি তালিকাভুক্ত করুন


10

ভূমিকা

এই চ্যালেঞ্জে আপনার কাজ হ'ল দুটি ফিনিশ বিশেষ্যদের কেস সঠিকভাবে তালিকাভুক্ত করা । মোড়টি হ'ল আপনি অন্যগুলির উত্পাদন করতে গাইডের তালিকাগুলির মধ্যে একটি ব্যবহার করতে পারেন।

বিশেষ্য

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

সারণী 1: ওভির কেস ("দরজা")

ovi : ovet
oven : ovien
oven : ovet
ovea : ovia
ovessa : ovissa
ovesta : ovista
oveen : oviin
ovella : ovilla
ovelta : ovilta
ovelle : oville
ovena : ovina
oveksi : oviksi
ovin
ovetta : ovitta
ovine

সারণী 2: জলকার ক্ষেত্রে ("পা")

jalka : jalat
jalan : jalkojen
jalan : jalat
jalkaa : jalkoja
jalassa : jaloissa
jalasta : jaloista
jalkaan : jalkoihin
jalalla : jaloilla
jalalta : jaloilta
jalalle : jaloille
jalkana : jalkoina
jalaksi : jaloiksi
jaloin
jalatta : jaloitta
jalkoine

কাজটি

আপনার কাজটি হ'ল দুটি প্রোগ্রাম লিখুন fএবং g(সম্ভবত বিভিন্ন নাম সহ) যা একটি স্ট্রিংকে ইনপুট হিসাবে গ্রহণ করে, একটি স্ট্রিং আউটপুট হিসাবে দেয় এবং নিম্নলিখিত সম্পত্তি থাকে। টেবিল 1 যদি fইনপুট হিসাবে দেওয়া হয় , এটি টেবিল 2 কে আউটপুট করে এবং যদি টেবিল 2 দেওয়া হয় g, এটি সারণী 1 কে আউটপুট করে দেয় অন্য সমস্ত ইনপুট ফলাফল অনির্ধারিত আচরণের ফলে। টেবিলগুলি অবশ্যই ইনপুট এবং আউটপুট উভয় ক্ষেত্রে ঠিক উপরে প্রদর্শিত হবে । আপনি বৈকল্পিকভাবে ধরে নিতে পারেন যে সেখানে একটি অনুবর্তনযোগ্য নিউলাইন রয়েছে তবে এটি অবশ্যই উভয় টেবিল এবং ইনপুট এবং আউটপুট উভয় ক্ষেত্রেই ব্যবহার করা উচিত। পূর্বের কোনও নিউলাইন নেই।

বিধি ও বোনাস

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

একটা হল -25% বোনাস রেগুলার এক্সপ্রেশান্স ব্যবহার করে না।

কিছু স্পষ্টতা

এটি কোনও ফাংশন / প্রোগ্রাম লিখতে পুরোপুরি সূক্ষ্ম fযা এর ইনপুটটিকে উপেক্ষা করে সর্বদা সারণি 2 প্রদান করে এবং একটি ফাংশন / প্রোগ্রাম gযা সর্বদা সারণী 1 প্রদান করে It এটি কেবলমাত্র প্রয়োজন এবং এটি ; অন্যান্য সমস্ত ইনপুটগুলির এবং এর আচরণ অপ্রাসঙ্গিক।f(Table 1) == Table 2g(Table 2) == Table 1fg

"সম্পূর্ণ পৃথক" অংশটি নীচের অর্থ। আপনার উত্তরটি দুটি টুকরো কোড সরবরাহ করে, একটির জন্য fএবং একটি এর জন্য g, বিশেষত বিভিন্ন কোড বাক্সে। যদি আমি fকোনও ফাইলের জন্য কোডটি রাখি এবং এটি চালিত করি তবে এটি কার্যকর হয় এবং এর জন্যও একই g। আপনার স্কোরটি দুই টুকরো কোডের বাইট গণনার সমষ্টি। যে কোনও সদৃশ কোডটি দুবার গণনা করা হয়।


if Table 1 is given `f` as inputকীভাবে একটি টেবিলের মধ্যে একটি ইনপুট কাজ করে? আমি এই অংশটি বুঝতে পারি না

@ সত্যতা "যদি টেবিল 1 ইনপুট হিসাবে দেওয়া হয় f "
জাগারব

উত্তর:


5

পার্ল, 105 + 54 = 159

প্রোগ্রাম f( আমাকে চেষ্টা করুন ):

#!perl -p
s/vi /vka /;s/ve/va/g;s/en/an/;s/vi/voi/;s/ov/1&34960>>$.?jalk:jal/eg;s/ii/ihi/;s/loia/lkoje/;s/oia/oja/

প্রোগ্রাম g( আমাকে চেষ্টা করুন ):

#!perl -p
s/jalk?o?/ov/g;s/va /vi /;s/va/ve/g;s/an/en/;y/jh/i/d

এর বিকল্প সংস্করণ f, মাত্র 2 বাইট দীর্ঘ (এই পদ্ধতিতে প্রয়োগ করা যেতে পারে gতবে এটি দীর্ঘও হবে):

#!perl -p0
ka1a1a1koj1a1a1ka1koj1a1o0a1o0kaa2koih1a1o0a1o0a1o0ka1ko0a1o0o0a1o0ko=~s!\D+!"s/ov".'.'x$'."/jal$&/"!gree

প্রযুক্তিগতভাবে এটি এখনও একটি রেজিএক্সপ্যাক ব্যবহার করে (বিকল্পের স্ট্রিংটি ডিকোড করতে এবং তারপরে সেগুলি প্রয়োগ করতে) তাই আমি এখানে বোনাসটি দাবি করতে পারি না।


বাহ, ভাল কাজ s/jalk?o?/ov/g! যে এক শক্তিশালী।
Sp3000

4

পার্ল, 131 + 74 = 205

টেবিল 1 থেকে টেবিল 2

$_=join"",<>;s/ee/kaa/;s/ii/koihi/;s/i(e|a)/koj$1/g;s/i(na|ne)/koi$1/g;s/v[ie](.?a| )/vka$1/g;s/vi/voi/g;s/ve/va/g;s/ov/jal/g;print

সম্প্রসারিত:

$_=join"",<>;
s/ee/kaa/;
s/ii/koihi/;
s/i(e|a)/koj$1/g;
s/i(na|ne)/koi$1/g;
s/v[ie](.?a| )/vka$1/g;
s/vi/voi/g;
s/ve/va/g;
s/ov/jal/g;
print

টেবিল 2 থেকে টেবিল 1

$_=join"",<>;s/aan/aen/;s/jal(ka\b|oi|ko[ij]h?)/ovi/g;s/jalk?a/ove/g;print

সম্প্রসারিত:

$_=join"",<>;
s/aan/aen/;
s/jal(ka\b|oi|ko[ij]h?)/ovi/g;
s/jalk?a/ove/g;
print

(কিছু পার্ল টিপসের জন্য নুনটিকে ধন্যবাদ)

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

এটা অনেক কঠিন থেকে যান এর Ovi টেবিলে jalka টেবিল, যা আমি অনুমান করছি কারণ jalka টেবিল উচ্চারণ শব্দ সহজ করতে অতিরিক্ত তারতম্য রয়েছে।


প্রতিস্থাপন টেবিলটি আমি এখানে কাজ করছিলাম:

i <-> ka
--------
ov i               jal ka

e <-> ka
--------
ov e a             jal ka a
ov e na            jal ka na

e <-> a
-------
ov e t             jal a t
ov e n             jal a n
ov e ssa           jal a ssa
ov e sta           jal a sta
ov e lla           jal a lla
ov e lta           jal a lta
ov e lle           jal a lle
ov e ksi           jal a ksi
ov e tta           jal a tta

i <-> oi
--------
ov i ssa           jal oi ssa
ov i sta           jal oi sta
ov i lla           jal oi lla
ov i lta           jal oi lta
ov i lle           jal oi lle
ov i ksi           jal oi ksi
ov i n             jal oi n
ov i tta           jal oi tta

i <-> koi
---------
ov i na            jal koi na
ov i ne            jal koi ne

i <-> koj
---------
ov i en            jal koj en
ov i a             jal koj a

i <-> koih
------------
ov i in            jal koih in

ee <-> kaa
----------
ov ee n            jal kaa n

2

পাইথন 2, 371 - 25% = 278

যখন টেবিল 1 টি এফ ইন করার ইনপুট হয়, এটি টেবিলটি 2 ফেরত দেয় তবে যদি ইনপুটটি টেবিল 1 না হয় তবে এর আউটপুটটি পূর্বনির্ধারিত হয় (তবে সম্ভবত তবে টেবিল 2 ফেরত দেওয়ার গ্যারান্টিযুক্ত নয়)। উদাহরণস্বরূপ, কলিং f(9**9**9**9)সম্ভবত টেবিল 2 ফিরে আসবে না।

f=lambda a:'jalkaBatAanBkojenAanBatAkaaBkojaAassaBoissaAastaBoistaAkaanBkoihinAallaBoillaAaltaBoiltaAalleBoilleAkanaBkoinaAaksiBoiksiAoinAattaBoittaAkoine'.replace('A','\njal').replace('B',' : jal')

একই যুক্তিটি ফাংশন জি সহ ব্যবহৃত হয়:

g=lambda a:'oviBetAenBienAenBetAeaBiaAessaBissaAestaBistaAeenBiinAellaBillaAeltaBiltaAelleBilleAenaBinaAeksiBiksiAinAettaBittaAine'.replace('A','\nov').replace('B',' : ov')

ফাংশনগুলি স্বাধীন।


0

পাইথন - 462 - 25% = 346.5

কিছু প্রোগ্রাম গল্ফিং ট্রিকস ব্যতীত এই প্রোগ্রামটি সুস্পষ্ট, সরাসরি পন্থা করে। অপরিজ্ঞাত আচরণের জন্য এটি নির্ধারিত আচরণের মতো টেবিলটিও মুদ্রণ করে। কি আশ্চর্যজনক "কাকতালীয়"! :)

x,y="""ovi:ovet
oven:ovien
oven:ovet
ovea:ovia
ovessa:ovissa
ovesta:ovista
oveen:oviin
ovella:ovilla
ovelta:ovilta
ovelle:oville
ovena:ovina
oveksi:oviksi
ovin
ovetta:ovitta
ovineXjalka:jalat
jalan:jalkojen
jalan:jalat
jalkaa:jalkoja
jalassa:jaloissa
jalasta:jaloista
jalkaan:jalkoihin
jalalla:jaloilla
jalalta:jaloilta
jalalle:jaloille
jalkana:jalkoina
jalaksi:jaloiksi
jaloin
jalatta:jaloitta
jalkoine""".replace(':',' : ').split('X')
f=lambda n:y
g=lambda n:x

এখন, যদি কেউ এই প্রতারণার বিষয়টি বিবেচনা করে (হ্যাঁ ঠিক), তবে আমি আরও 20 টি অক্ষর = 482 - 25% = 361.5 এর জন্য নিয়মের স্পিরিট অনুসরণ করতে পারি । শেষ দুটি লাইনটি কেবল এর সাথে প্রতিস্থাপন করুন:

f=lambda n:[x,y][n==x]
g=lambda n:[y,x][n==y]

এটি অনির্ধারিত আচরণকে সঠিক টেবিল নয় বরং ইনপুট সারণিতে ফিরিয়ে আনবে।


সর্বদা একই টেবিলটি ফেরত দেওয়া পুরোপুরি ঠিক। তবে, চ্যালেঞ্জটি বলেছে যে ফাংশনগুলি সংজ্ঞায়িত করতে ব্যবহৃত সমস্ত কোড পৃথক হতে হবে (এটি কিছুটা অস্পষ্ট হতে পারে, আমি এটি পরিষ্কার করার চেষ্টা করব)। বিশেষ করে, আপনি সংজ্ঞায়িত করতে পারবেন xএবং yএক এক্সপ্রেশনে, এবং একটি ব্যবহার fএবং অন্যান্য y
জাগারব

"ইন y" -> "ইন g"
জাগারব

0

VBA 1204 (1605 - 25%) 1191 (1587 - 25%)

সরাসরি পন্থা।

সম্পাদনা করুন: বাগডকে সঠিক করা হয়েছে এবং @ মাল্টেসেন থেকে রিপ্লেস ট্রিক ব্যবহার করা হয়েছে

Function f(s)
    If Replace(s, " : ", ":") = "ovi:ovet" & vbLf & "oven:ovien" & vbLf & "oven:ovet" & vbLf & "ovea:ovia" & vbLf & "ovessa:ovissa" & vbLf & "ovesta:ovista" & vbLf & "oveen:oviin" & vbLf & "ovella:ovilla" & vbLf & "ovelta:ovilta" & vbLf & "ovelle:oville" & vbLf & "ovena:ovina" & vbLf & "oveksi:oviksi" & vbLf & "ovin" & vbLf & "ovetta:ovitta" & vbLf & "ovine" Then f = Replace("jalka:jalat" & vbLf & "jalan:jalkojen" & vbLf & "jalan:jalat" & vbLf & "jalkaa:jalkoja" & vbLf & "jalassa:jaloissa" & vbLf & "jalasta:jaloista" & vbLf & "jalkaan:jalkoihin" & vbLf & "jalalla:jaloilla" & vbLf & "jalalta:jaloilta" & vbLf & "jalalle:jaloille" & vbLf & "jalkana:jalkoina" & vbLf & "jalaksi:jaloiksi" & vbLf & "jaloin" & vbLf & "jalatta:jaloitta" & vbLf & "jalkoine", ":", " : ")
End Function

Function g(s)
    If Replace(s, " : ", ":") = "jalka:jalat" & vbLf & "jalan:jalkojen" & vbLf & "jalan:jalat" & vbLf & "jalkaa:jalkoja" & vbLf & "jalassa:jaloissa" & vbLf & "jalasta:jaloista" & vbLf & "jalkaan:jalkoihin" & vbLf & "jalalla:jaloilla" & vbLf & "jalalta:jaloilta" & vbLf & "jalalle:jaloille" & vbLf & "jalkana:jalkoina" & vbLf & "jalaksi:jaloiksi" & vbLf & "jaloin" & vbLf & "jalatta:jaloitta" & vbLf & "jalkoine" Then f = Replace("ovi:ovet" & vbLf & "oven:ovien" & vbLf & "oven:ovet" & vbLf & "ovea:ovia" & vbLf & "ovessa:ovissa" & vbLf & "ovesta:ovista" & vbLf & "oveen:oviin" & vbLf & "ovella:ovilla" & vbLf & "ovelta:ovilta" & vbLf & "ovelle:oville" & vbLf & "ovena:ovina" & vbLf & "oveksi:oviksi" & vbLf & "ovin" & vbLf & "ovetta:ovitta" & vbLf & "ovine", ":", " : ")
End Function

তাত্ক্ষণিক উইন্ডো থেকে চালান:

msgbox f("ovi : ovet" & vbLf & "oven : ovien" & vbLf & "oven : ovet" & vbLf & "ovea : ovia" & vbLf & "ovessa : ovissa" & vbLf & "ovesta : ovista" & vbLf & "oveen : oviin" & vbLf & "ovella : ovilla" & vbLf & "ovelta : ovilta" & vbLf & "ovelle : oville" & vbLf & "ovena : ovina" & vbLf & "oveksi : oviksi" & vbLf & "ovin" & vbLf & "ovetta : ovitta" & vbLf & "ovine")

আপনি কি কেবল প্রথম চরিত্রটি 'ও' বা 'জ' কিনা তা পরীক্ষা করে দেখতে চান না?
ক্লদিউ

@ ক্লডিউ আসলে, কিছু যাচাই করার দরকার নেই; যে ফাংশনগুলি তাদের ইনপুট উপেক্ষা করে এবং সর্বদা একই টেবিলটি দেয় তা বৈধ উত্তর। আমি চ্যালেঞ্জের মধ্যে এটি স্পষ্ট করব।
Zgarb

@ ক্লাউডিউ আমি সে সম্পর্কে ভেবেছিলাম, তবে কেউ যদি "ও" পাস করে এটিকে চালায়?
ফ্রেব

@ জগারব দেখে মনে হচ্ছে আমার ফাংশনগুলি তাদের ইনপুটটিকে অগ্রাহ্য করছে যা তারা (প্রযুক্তিগতভাবে) নয়। যদিও অক্ষরের কোনও অনুবাদ নেই।
ফ্রেব

না, আমি কেবল বলছি যে তারা কেবল তাদের ইনপুট উপেক্ষা করতে পারে এবং এখনও বৈধ হতে পারে।
জাগারব

0

জাভাস্ক্রিপ্ট (ES6) 271 (165 + 196 -25%)

সহজ শুরু হচ্ছে। ফাংশনগুলি একেবারে ইনপুট পরামিতি উপেক্ষা করে।
নিয়মিত অভিব্যক্তি এড়াতে প্রতিস্থাপনের পরিবর্তে বিভক্ত / যোগদান ব্যবহার করুন।

g=_=>'ovi1et0n1ien0n1et0a1ia0ssa1issa0sta1ista0en1iin0lla1illa0lta1ilta0lle1ille0na1ina0ksi1iksi\novin0tta1itta\novine'
.split(0).join('\nove').split(1).join(' : ov')
f=_=>'jalka1at0an1kojen0an1at0kaa1koja0assa1oissa0asta1oista0kaan1koihin0alla1oilla0alta1oilta0alle1oille0kana1koina0aksi1oiksi0oin0atta1oitta0koine'
.split(0).join('\njal').split(1).join(' : jal')

টেস্ট ফায়ারফক্স / Firebug কনসোলে

console.log(f('ovi : ovet\noven : ovien\noven : ovet\novea : ovia\novessa : ovissa\novesta : ovista\noveen : oviin\novella : ovilla\novelta : ovilta\novelle : oville\novena : ovina\noveksi : oviksi\novin\novetta : ovitta\novine'))

jalka: jalat
Jalan: jalkojen
Jalan: jalat
jalkaa: jalkoja
jalassa: jaloissa
jalasta: jaloista
jalkaan: jalkoihin
jalalla: jaloilla
jalalta: jaloilta
jalalle: jaloille
jalkana: jalkoina
jalaksi: jaloiksi
jaloin
jalatta: jaloitta
jalkoine

console.log(g("jalka : jalat\njalan : jalkojen\njalan : jalat\njalkaa : jalkoja\njalassa : jaloissa\njalasta : jaloista\njalkaan : jalkoihin\njalalla : jaloilla\njalalta : jaloilta\njalalle : jaloille\njalkana : jalkoina\njalaksi : jaloiksi\njaloin\njalatta : jaloitta\njalkoine"))

Ovi: ovet
চুলা: ovien
চুলা: ovet
ovea: ovia
ovessa: ovissa
ovesta: ovista
oveen: oviin
ovella: Ovilla
ovelta: ovilta
ovelle: oville
ovena: ovina
oveksi: oviksi
ovin
ovetta: ovitta
মেষসংক্রান্ত

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