ম্যাচস্টিক ধাঁধাটি সমাধান করুন


17

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

এই প্রশ্নে আমরা কেবলমাত্র 7-সেগমেন্ট প্রদর্শন বিন্যাসে উপস্থাপিত পূর্ণসংখ্যা বিবেচনা করব। এই বিন্যাসে সমস্ত 10 টি সংখ্যা এখানে রয়েছে:

 __          __   __          __    __    __    __    __
|  |     |   __|  __|  |__|  |__   |__      |  |__|  |__|
|__|     |  |__   __|     |   __|  |__|     |  |__|   __|    

ডিসপ্লেটির প্রতিটি বিভাগটি একটি "ম্যাচ স্টিক" যা বাকী সংখ্যার থেকে স্বতন্ত্রভাবে সরানো যায়। ম্যাচস্টিকগুলি অবিভাজ্য এবং অবিনাশী, কোনওভাবেই এটি ভাঙা বা অপসারণ করা যায় না।

একটি সাধারণ ধাঁধা হ'ল বেস 10 তে প্রদত্ত একটি সংখ্যা নেওয়া এবং প্রদত্ত সংখ্যার চলনে সর্বাধিক সংখ্যাটি তৈরি করার চেষ্টা করা। একটি স্থানান্তরকে কোনও দখলকৃত স্লট থেকে অন্য যে কোনও অনাবৃত স্লটে ম্যাচস্টিকের একটি চলন বলে মনে করা হয়। আপনি সংখ্যার উভয় দিকে নতুন সংখ্যা তৈরি করার জন্য পুরোপুরি অনুমতি পেয়েছেন, উদাহরণস্বরূপ 0 এ 3 টি মুভগুলি 77 এ তৈরি করা যেতে পারে

 __      __  __      __   __      __   __
|  |    |  |        |  |    |       |    |
|__| ,   __|     ,     |      ,     |    |

তবে আপনি একটি স্লট 2-এ তৈরি করতে পারবেন না বা বিদ্যমান স্লটগুলির মধ্যে নতুন স্লট তৈরি করতে পারবেন না, উদাহরণস্বরূপ একটি সংখ্যার মাঝামাঝি একটি 4 কে 11 এ পরিণত করা বা বিদ্যমান সংখ্যার মধ্যে নতুন সংখ্যা সন্নিবেশ করানো। প্রতিটি পদক্ষেপে একটি যথাযথ সংখ্যা তৈরি করার দরকার নেই তবে চূড়ান্ত ফলাফলটি বেস 10 সাতটি বিভাগে প্রদর্শনে একটি উপযুক্ত সংখ্যা হওয়া উচিত। আপনি যদি না চান তবে আপনার প্রতিটি পদক্ষেপ ব্যবহার করার দরকার নেই। বিস্মিত হওয়ার মতো নয় এটি আপনার [উত্তর: কোনও সমাপ্তি সম্পর্কিত প্রশ্ন] আপনি কোনও অপারেটর (গুণ, ক্ষয় ইত্যাদি) বা গাণিতিক ধ্রুবক (পাই, গ্রাহামের সংখ্যা ইত্যাদি) ব্যবহার করতে পারবেন না

কার্য

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ইনপুট হিসাবে একটি সংখ্যা এবং বিভিন্ন পদক্ষেপ নেয় এবং মূল সংখ্যায় অনেকগুলি চালগুলি দিয়ে তৈরি করা যায় এমন বৃহত্তম সংখ্যাটি দেয়।

এটি একটি প্রশ্ন তাই কম বাইট ভাল হওয়ার সাথে উত্তরগুলি বাইটে স্কোর করা হবে।

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

n, moves -> max
0, 1     -> 9
0, 3     -> 77
0, 4     -> 111
8, 3     -> 74
220, 1   -> 320
220, 2   -> 520
220, 3   -> 7227
220, 4   -> 22111
220, 5   -> 32111
747, 1   -> 747
747, 2   -> 7171
747, 3   -> 7711

সম্পর্কিত



1
মাঝখানে গঠিত ফাঁকা স্লটগুলি কি শেষে উপেক্ষা করা যেতে পারে? উদাহরণস্বরূপ919, 2 -> 991
ড্যান


গম উইজার্ড, কোন গ্রিড ব্যবহার করা হচ্ছে?
tuskiomi

@ টসকিওমি "তবে আপনি একটি স্লট 2 তে তৈরি করতে পারবেন না বা বিদ্যমান লোকদের মধ্যে নতুন স্লট তৈরি করতে পারবেন না"
পোস্ট রক গার্ফ হান্টার

উত্তর:


7

জাভাস্ক্রিপ্ট (ES6), 297 286 279 267 বাইট

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

s=>k=>(B=(n,b=0)=>n?B(n^n&-n,b+1):b,b=[...p='u"[k,iy#}m'].map(c=>c.charCodeAt()+2),r=[],g=(n,d='')=>n?n>0&&b.map((v,i)=>g(n-B(v),d+i)):r.push(d))(s.reduce((s,c)=>s+B(b[c]),M=0))&&b.map((_,j)=>r.map(n=>M=[...n+p].reduce((t,d,i)=>t+B(b[d]^b[s[i-j]]),0)>k*2|+n<M?M:n))|M

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


কিভাবে?

শেপ ডেটা এবং সহায়ক ফাংশন

  • অ্যারে বি ডিজিটের আকারগুলিকে 7-বিট পূর্ণসংখ্যার হিসাবে বর্ণনা করে, যেখানে প্রতিটি বিট একটি বিভাগ হয়:

    7-সেগমেন্ট

    উদাহরণস্বরূপ, "7" এর আকার 0 বি0100101 = 37।

  • সহায়ক ফাংশন বি () প্রদত্ত সংখ্যার বাইনারি উপস্থাপনায় 1 এর নম্বর প্রদান করে:

    B = (n, b = 0) => n ? B(n ^ n & -n, b + 1) : b

ধাপ 1

আমরা প্রথমে ইনপুট সংখ্যায় ব্যবহৃত ম্যাচস্টিকগুলির সংখ্যা গণনা করি:

s.reduce((s, c) => s + B(b[c]), 0)

ধাপ ২

আমরা এই মানটি রিকার্সিভ ফাংশন জি () তে পাস করি , যা এই সংখ্যার ম্যাচস্টিকগুলির সাথে ঠিক তৈরি করা যেতে পারে এমন সমস্ত সংখ্যার সাথে একটি তালিকা আরকে জনপ্রিয় করে তোলে:

g = (n, d = '') =>
  n ?
    n > 0 &&
    b.map((v, i) => g(n - B(v), d + i))
  :
    r.push(d)

উদাহরণস্বরূপ, ছ (5) লোড করা হবে [ '17', '2', '3', '5', '71' ]মধ্যে R

ধাপ 3

আমরা এখন সর্বোচ্চ সংখ্যা নির্বাচন করতে হবে এম যা আসলে ইনপুট নম্বর থেকে প্রাপ্ত করা যাবে, প্যাচসমূহ মঞ্জুরিপ্রাপ্ত সংখ্যাকে মধ্যে

প্রতিটি সংখ্যা যেহেতু এন মধ্যে R ব্যবহার ঠিক হিসাবে ইনপুট সংখ্যা অনেক matchsticks যেমন গুলি , প্যাচসমূহ সংখ্যা রুপান্তর করা প্রয়োজন গুলি মধ্যে এন সমান অর্ধেক তাদের ডিজিটের প্রতিটি মধ্যে সেগমেন্ট পার্থক্য সংখ্যা।

দুই অঙ্কের x এবং y এর মধ্যে বিভাগের পার্থক্যের সংখ্যা b [x] XOR b [y] এর বাইনারি উপস্থাপনায় 1 এর সংখ্যা দ্বারা দেওয়া হয় ।

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


1

গণিত, 188 197 200 203 170 174 বাইট

দ্রষ্টব্য: কোডটি এখনও বগি জাতীয়। আমি এটার উপর কাজ করছি.

বাগের জন্য +30 বাইট

(p=PadLeft;q=IntegerDigits;g=Join@@(#~q~2~p~7&/@ToCharacterCode["w$]m.k{% o"][[1+q@#]])&;h=(v=g@#2~#~96-g@i~#~96;Tr@v==0&&Tr@Abs@v<=2#3)&;For[i=10^Tr@g@#,!h[p,##]&&!h[PadRight,##],--i];i)&

এর মধ্যে চরিত্রটি হওয়া উচিত %এবং এসই এটির অনুমতি দেয় না। আসল কোডটি অনুলিপি করতে আপনি পেস্টবিনের লিঙ্কটি ক্লিক করতে পারেন ।o0x7F

যখন 6-7 এর বেশি লাঠি থাকে তখন কোডটি অনেক সময় নেয়। ( iএটি পরীক্ষা করার জন্য আপনি একটি ছোট সংখ্যার প্রারম্ভিক মানটি পরিবর্তন করতে পারেন)

ব্যাখ্যা

gএকটি সাহায্যকারী ফাংশন লাঠি উপস্থাপনা (অনুযায়ী একটি তালিকা মধ্যে সংখ্যা রূপান্তর হয় এখানে যেমন), {1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1}জন্য 220

h বাম-প্যাডিং এবং দুটি সংখ্যার মধ্যে ডান-প্যাডিংয়ের সাথে কাজ করার জন্য একটি সহায়ক ফাংশন।

fএকটি পূর্ণসংখ্যার সন্ধানের জন্য 10^Tr@g@#(উচ্চ সীমা) থেকে পুনরাবৃত্তি 1ঘটে যার কাঠির উপস্থাপনের মূল সংখ্যাটির সমান পরিমাণ রয়েছে 1 -> 0এবং 0 -> 1তুলনামূলকভাবে দ্বিতীয় আর্গুমেন্টের তুলনায় পরিমাণটি ছোট বা সমান।


আমি আপনাকে একটি +1 দিয়েছিলাম কারণ আমি কখনই কোনও বিজয়ী উত্তর অন্য উত্তরের চেয়ে কম স্কোর করতে দেখিনি। আমি ধরে নিলাম এটি কারণ অনলাইন পরীক্ষার বিকল্পগুলির অভাব। সম্ভবত ম্যাথমেটিকা ​​আছে এমন কিছু লোক এসে এটি পরীক্ষা করে দেখতে এবং এটি ভালভাবে কাজ করে যাচাই করতে পারে, যাতে আপনি আরও কিছু উত্সাহ পেতে পারেন। অথবা কেউ যদি সম্ভব হয় তবে এটি অ্যাকটভে রূপান্তর করতে পারে।
জিওভেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.