ভারসাম্য ঘাঁটির মধ্যে রূপান্তর!


13

ভারসাম্য বেস:

ভারসাম্যযুক্ত বেসগুলি মূল ঘাঁটিগুলির মত একই, বাদে অঙ্কগুলি ধনাত্মক বা negativeণাত্মক হতে পারে, অন্যদিকে সাধারণ বেসগুলিতে অঙ্কগুলি কেবল ধনাত্মক হতে পারে।

এখান থেকে, বেসের সুষম ঘাঁটিগুলি bউপস্থাপিত হতে পারে balb- তাই সুষম বেস 4 = bal4

এই প্রতিদ্বন্দ্বিতা সংজ্ঞা সালে ভিত্তির একটি সুষম বেস ডিজিটের পরিসীমা bথেকে -(k - 1)থেকে b - k, যেখানে

k = ceil(b/2)

বিভিন্ন ভারসাম্য ভিত্তিতে অঙ্কের ব্যাপ্তির উদাহরণ:

bal10:
  k = ceil(10/2) = 5
  range = -(5 - 1) to 10 - 5 = -4 to 5
        = -4, -3, -2, -1, 0, 1, 2, 3, 4, 5
bal5:
  k = ceil(5/2) = 3
  range = -(3 - 1) to 5 - 3 = -2 to 2
        = -2, -1, 0, 1, 2

ভারসাম্য ভিত্তিতে সংখ্যার প্রতিনিধিত্ব মূলত সাধারণ ঘাঁটির মতো same উদাহরণস্বরূপ, সংখ্যার 27(বেস 10) থেকে bal4(ভারসাম্য বেস 4) উপস্থাপনা হ'ল 2 -1 -1, কারণ

  2 -1 -1 (bal4)
= 2 * 4^2 + -1 * 4 + -1 * 1
= 32 + (-4) + (-1)
= 27 (base 10)

টাস্ক:

আপনার কাজটি তিনটি ইনপুট দেওয়া হয়েছে:

  • রূপান্তরিত করতে নম্বর ( n)
    • এই ইনপুটটি নমনীয় হতে পারে, "I / O নমনীয়তা" দেখুন
  • বেস nবর্তমানে যা ( b)
  • বেস যা nরূপান্তরিত করার জন্য আছে ( c)

কোথায় 2 < b, c < 1,000

এর ভারসাম্য বেস cউপস্থাপনায় নম্বরটি ফিরিয়ে দিন n। আউটপুট এছাড়াও নমনীয় হতে পারে।

প্রোগ্রাম / ফাংশনটি অবশ্যই nইনপুট থেকে দৈর্ঘ্য নির্ধারণ করে।

I / O নমনীয়তা:

আপনার ইনপুট nএবং আউটপুট এই উপায়ে প্রতিনিধিত্ব করা যেতে পারে:

  • একটি অ্যারের আপনার ভাষার সংজ্ঞা
  • একটি স্ট্রিং, বিভাজক হিসাবে যে কোনও অক্ষর সহ (যেমন স্পেস, কমা)

উদাহরণ:

লক্ষ্য করুন যে এগুলি পাইথন অ্যারে nএবং আউটপুট হিসাবে ব্যবহার করে। "I / O নমনীয়তা" এর সংজ্ঞা অনুযায়ী এটি আপনার ভাষার সাথে মানানসই হিসাবে ব্যবহার করতে পারেন।

[2, -1, -1] 4 7 = [1, -3, -1]
[1, 2, 3, 4] 9 5 = [1, 2, 2, -1, 2]
[10, -9, 10] 20 5 = [1, 1, 1, -2, 1, 0]

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোড!


আপনার প্রথম উত্তরে 4 টি আইনী বাল 7 সংখ্যা নয়; আমি বিশ্বাস করি উত্তরটি [1, -3, -1] হওয়া উচিত। এবং আমি দ্বিতীয় পরীক্ষার মামলার ([1,2,2, -1,2]) এবং তৃতীয় পরীক্ষার মামলার ([1,1,0, -2,1,0]) পাশাপাশি বিভিন্ন উত্তর পেয়েছি ...?
গ্রেগ মার্টিন

@ গ্রেগমার্টিন আহ, ওফ - আমি এগুলি হাতে হাতে গণনা করেছি, তাই কিছু সমস্যা হতে বাধ্য ছিল। দেখার জন্য ধন্যবাদ! আপনি কি ঠিক আপনার ক্ষেত্রে সমাধানগুলি ডাবল-চেক করতে পারেন?
ক্লিমিক

@ গ্রেগমার্টিন @ কিউয়ারপ-ডের্প তৃতীয় পরীক্ষার [1,1,1,-2,1,0]
কেসটি

উত্তর:


2

গণিত, 85 বাইট

#~FromDigits~#2~IntegerDigits~#3//.{p___,a_:0,b_,q___}/;b>⌊#3/2⌋:>{p,a+1,b-#3,q}&

ব্যাখ্যা

#~FromDigits~#2

রূপান্তর #1(1 বোঝানো হয়েছে - ইনপুট 1, অঙ্কের একটি তালিকা) একটি পূর্ণসংখ্য বেসে #2(ইনপুট 2)।

... ~IntegerDigits~#3

#3অঙ্কের তালিকা তৈরি করে ফলাফলের পূর্ণসংখ্যাটিকে বেস (ইনপুট 3) এ রূপান্তর করুন ।

... //.{p___,a_:0,b_,q___}/;b>⌊#3/2⌋:>{p,a+1,b-#3,q}

বারবার অঙ্কগুলির তালিকাটি প্রতিস্থাপন করুন; যদি কোনও অঙ্ক তল ( #3/ 2) এর চেয়ে বড় হয় , তবে #3এটি থেকে বিয়োগ করুন এবং অঙ্কটি 1বামে যুক্ত করুন। বামদিকে কিছু না থাকলে একটি sertোকান 0এবং যুক্ত করুন 1


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

@ATaco যোগ করেছেন ব্যাখ্যা!
জংহওয়ান মিন

আমি এর দ্বারা কিছুটা রহস্যজনক। আমি কখনও কোথাও anywhereচ্ছিক নিদর্শনগুলি ব্যবহার করে দেখিনি তবে ফাংশন সংজ্ঞা। {...}শুধুমাত্র প্রতিস্থাপনের নিয়ম থাকার কারণে আপনার বাইরের দরকার নেই।
নেজিনিসিস

1
@ জংহওয়ানমিন সত্য, আমি অনুমান করি যে আমাকে কী বিভ্রান্ত করছে তা হল এটি কীভাবে ম্যাচের প্রতি প্রভাব ফেলে p___। এটি কি p___উভয় দ্বারা অনুসরণ করা সংক্ষিপ্ততমটি খুঁজে পায় a_,b_বা b_, বা এটি কোনও বিকল্প বিকল্পের জন্য প্রয়োজনীয় পুরো প্যাটার্নটি পরীক্ষা করে এবং তারপরে কোনও মিল খুঁজে পাওয়া না হওয়া পর্যন্ত ধীরে ধীরে alচ্ছিক নিদর্শনগুলি ফেলে দেয় (বা কোনও তৃতীয় বিকল্প)?
ngenisis

1
@ এনজেনিসিস আমি বিশ্বাস করি যে আমি আগের মন্তব্যে ভুল ছিলাম (মুছে ফেলা), এর ফলাফল পর্যবেক্ষণ করে FixedPointList[k=#3;#/.{p___,a_:0,b_,q___}/;b>⌊k/2⌋:>{p,a+1,b-k,q}&, #~FromDigits~#2~IntegerDigits~#3]&{p___,a_,b_,q___}প্রথম মিলিত হয় (সমস্ত সম্ভবের জন্য p), এবং তারপরে {p___,b_,q___}এটি মিলে যায়। দ্বিতীয় প্রতিস্থাপনটি কেবল তখন শুরু bহয় যখন শুরুতে হয় কারণ যদি bমাঝখানে এমন একটি থাকে যা শর্তটি সন্তুষ্ট করে {p___,a_,b_,q___}তবে তার পরিবর্তে এটি মিলবে।
জংহওয়ান মিন

1

পার্ল 6 , 121 বাইট

->\n,\b,\c{sub f{sum [R,](@^n)Z*($^b X**0..*)}
first {f(b,n)==f c,$_},map {[$_-($_>floor c/2)*c for .base(c).comb]},0..*}

ধীর ব্রুট ফোর্স সমাধান।

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

  • map {[ .base(c).comb]}, 0..*- বেসে প্রাকৃতিক সংখ্যার অলস অসীম ক্রম উত্পন্ন করুন c, প্রতিটি সংখ্যা অঙ্কের অ্যারে হিসাবে উপস্থাপন করে।
  • $_ - ($_ > floor c/2) * c- cমেঝে (সি / 2) এর চেয়ে বড় প্রতিটি অঙ্ক থেকে বিয়োগ করে এটি রূপান্তর করুন ।
  • first { f(b, n) == f(c, $_) }, ...- সেই অনুক্রমের প্রথম অ্যারে পান যা যখন একটি বেস cনম্বর হিসাবে ব্যাখ্যা করা হয় তখন বেস নম্বর nহিসাবে ব্যাখ্যা করা ইনপুট অ্যারের সমান হয় b
  • sub f { sum [R,](@^n) Z* ($^b X** 0..*) }- সহায়তার ফাংশন যা @^nবেসের সংখ্যার সাথে একটি অ্যারেকে পরিণত $^bকরে, বেসের শক্তির ক্রম অনুসারে বিপরীত অ্যারে জিপ করে প্রাপ্ত পণ্যগুলির যোগফল গ্রহণ করে।

1

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

(n,b,c,g=(n,d=n%c,e=d+d<c)=>[...(n=n/c+!e|0)?g(n):[],e?d:d-c])=>g(n.reduce((r,d)=>r*b+d))

100 বাইট এর নেতিবাচক মানগুলির জন্য কাজ করে n

(n,b,c,g=(n,d=(n%c+c)%c)=>[...(n-=d,n/=c,d+d<c||(d-=c,++n),n?g(n):[]),d])=>g(n.reduce((r,d)=>r*b+d))

0

গণিত, 118 114 বাইট

IntegerDigits[#3~FromDigits~#2,k=⌊#/2⌋;#]//.{{a_,x___}/;a>k:>{1,a-#,x},{x___,a_,b_,y___}/;b>k:>{x,a+1,b-#,y}}&

এবং যথাক্রমে 3-বাইট অক্ষর U+230Aএবং U+230Bহয়। #3বেস 10থেকে বেসে রূপান্তর করে #2, তারপর বেসে রূপান্তরিত হয় #(সুতরাং যুক্তির ক্রম উদাহরণ থেকে বিপরীত হয়)। যদি কোনও অঙ্ক সর্বাধিক অনুমোদিত অঙ্কের চেয়ে বেশি হয় তবে সেই k=⌊#/2⌋অঙ্কটি হ্রাস করুন #এবং পরবর্তী অঙ্কটি বাড়িয়ে নিন (প্রিপেন্ডের প্রয়োজন হতে পারে 1)। সমস্ত সংখ্যার চেয়ে কম হওয়া অবধি এটি চালিয়ে যান k

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