ডিজিটাল ক্লক ধাঁধা মেলে


10

মিলগুলির সাথে অনেক ধাঁধা রয়েছে যা নতুন নম্বর বা আকার তৈরি করতে নির্দিষ্ট সংখ্যক ম্যাচ যুক্ত, সরানো বা সরিয়ে নেওয়া জড়িত। এটি একটি ডিজিটাল ঘড়ি সহ এরকম।

12-ঘন্টা ডিজিটাল ঘড়িতে একটি বৈধ সময় দেওয়া, এমন অঙ্কটি আউটপুট করুন যার জন্য সবচেয়ে কম লাইনগুলি সরানোর প্রয়োজন হয় যাতে ঘড়ির প্রতিটি দৃশ্যমান অঙ্কটি সেই অঙ্ক হয়ে যায়। যদি একের বেশি সংখ্যার ন্যূনতম হয় তবে সমস্তগুলি আউটপুট করুন। যদি প্রতিটি ডিজিটের সমান, আউটপুট -1বা 0 বাদে একটি মিথ্যা মান তৈরি করা অসম্ভব (আপনি এর অনেকগুলি পাবেন)।

ঘড়ির অঙ্কগুলি এর মতো দেখায়:

  |
  |
 _
 _|
|_
 _
 _|
 _|

|_|
  |
 _
|_
 _|
 _
|_
|_|
 _
  |
  |    
 _ 
|_|
|_|
 _
|_|
 _|
 _
| |
|_|

পরীক্ষার কেস:

ইনপুট: 123

ঘড়ি প্রদর্শন:

       _   _
  | :  _|  _|
  | : |_   _|

আউটপুট: 4

ব্যাখ্যা: এর জন্য প্রদর্শনের জন্য 1:23মোট 12 লাইন আঁকতে হবে। সুতরাং, প্রতিটি অঙ্ক একই হওয়ার জন্য, প্রতিটি অঙ্কের 4 টি লাইন থাকতে হবে। 4 টি লাইন রয়েছে এমন একমাত্র অঙ্ক 4। সুতরাং, উত্তর হতে হবে 4

ইনপুট: 1212

ঘড়ি প্রদর্শন:

     _        _
  |  _| :  |  _|
  | |_  :  | |_

আউটপুট: -1

ব্যাখ্যা: এর জন্য প্রদর্শনটির জন্য 12:1214 টি লাইন প্রয়োজন। 4 দ্বারা বিভক্ত 14 একটি পূর্ণসংখ্যা নয়, সুতরাং প্রতিটি সংখ্যার জন্য এটি একই হওয়া অসম্ভব।

ইনপুট: 654

ঘড়ি প্রদর্শন:

 _     _  
|_  : |_  |_|
|_| :  _|   |

আউটপুট: 5

ব্যাখ্যা: লাইনগুলির মোট সংখ্যা 15. 15 টি 3 দ্বারা বিভক্ত 5, সুতরাং প্রতিটি সংখ্যায় 5 টি লাইন থাকতে হবে। শুধুমাত্র সংখ্যা আছে 5 লাইন আছে 2, 3এবং 5। উত্তরটি হ'ল 5কারণ এটি প্রতিটি অঙ্কের জন্য 2 টি চালচলনের প্রয়োজন requires. কেবল 6 এর নীচে বাম দিকে লাইনটি 4 এর নীচে সরিয়ে নিন, তারপরে আপনার কাছে রয়েছে:

 _     _  
|_  : |_  |_|
 _| :  _|  _|

তারপরে, আপনি দেখতে পাচ্ছেন, আপনাকে কেবল অঙ্কের উপরে ডানদিকে লাইনটি সরিয়ে নিতে হবে যা মূলত 4 শীর্ষে ছিল এবং আপনি পাবেন 5:55। প্রতিটি অঙ্ক করতে a 2বা 32 টিরও বেশি চালচলনের প্রয়োজন হবে।

ইনপুট: 609

ঘড়ি প্রদর্শন:

 _     _   _
|_  : | | |_|
|_| : |_|  _|

আউটপুট: 609( 6,0,9বা [6,0,9]ঠিক আছে)

ব্যাখ্যা: 6, 0, এবং 9শুধুমাত্র সংখ্যা 6 লাইন আছে আছে। যেমন, তারাও একমাত্র সম্ভাব্য সমাধান। এগুলি কেবলমাত্র একটি সংখ্যা তৈরি করতে দুটি পদক্ষেপ নিতে হবে তা দেখতে অসুবিধা নেই। সুতরাং, আপনি তিনটি সংখ্যা আউটপুট।

মন্তব্য:

  • ইনপুট সময়টি অবশ্যই বৈধ হওয়া উচিত, তবে আউটপুট সময় হয় না (যেমন 999আউটপুট হিসাবে ঠিক আছে))
  • আমি ইনপুট দিয়ে খুব নমনীয়। আপনার একটি শীর্ষস্থানীয় 0 প্রয়োজন হতে পারে আপনি দশমিক পয়েন্ট সহ একটি নম্বর ব্যবহার করতে পারেন। আপনি একটি স্ট্রিং ব্যবহার করতে পারেন। আপনি একটি অ্যারে ব্যবহার করতে পারেন। আপনার প্রতিটি ডিজিটের জন্য একটি প্যারামিটার থাকতে পারে।

উত্তর:


1

জুলিয়া, 160 157 154

x->(c=count_ones;l=[119;36;93;109;46;107;123;37;127;111];m=l[x+1];n=map(a->c(a)==mean(map(c,m))?sum(map(b->c(a$b),m)):1/0,l);find(n.==minimum(n).!=1/0)-1)

এটি ল্যাম্বদা ফাংশন। এটিকে কল করার জন্য এটি একটি ভেরিয়েবলকে বরাদ্দ করুন। 0-9যেকোন দৈর্ঘ্যের পরিসরে পূর্ণসংখ্যার ভেক্টর গ্রহণ করে এবং ফলাফলের (সম্ভবত খালি) ভেক্টরকে প্রদান করে।

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

julia> clock = x->(c=co...        # assign function to variable
(anonymous function)

julia> clock([1 2 3])
1-element Array{Int64,1}:
 4

julia> clock([1 2 1 2])
0-element Array{Int64,1}

julia> clock([6 5 4])
1-element Array{Int64,1}:
 5

clock([6 0 9])
3-element Array{Int64,1}:
 0
 6
 9

ব্যাখ্যা

সাতটি বিভাগকে গণনা করুন এবং এটিকে কিছুটা ভেক্টর হিসাবে উপস্থাপন করুন।

+---+                     +-0-+
|   |      Enumerate      1   2
+---+   >  the seven  >   +-3-+
|   |      segments       4   5
+---+                     +-6-+

উদাহরণ: 1 (বিভাগগুলি 2 + 5 সক্ষম) হয়ে যায় 36(বিট 2 + 5 সেট)।
এখানে সংখ্যার উপস্থাপনা দেওয়া হল 0-9

l=[119;36;93;109;46;107;123;37;127;111];
m=l[x+1];

এর বিট ভেক্টর উপস্থাপনা পেতে আমরা অঙ্কটি সূচক হিসাবে ব্যবহার করতে পারি। +1জুলিয়ায় 1-ভিত্তিক সূচকের কারণে।

ফাংশনটি c=count_ones;একটি পূর্ণসংখ্যায় 1-বিটের সংখ্যা গণনা করে। আমরা একটি উপনাম নিযুক্ত করি কারণ আমাদের এটি আরও বেশি প্রয়োজন।

পুরো প্রোগ্রামটি, কিছুটা নিরপেক্ষ:

x->(
  c=count_ones;
  l=[119;36;93;109;46;107;123;37;127;111];
  m=l[x+1];
  n=map(a->c(a)==mean(map(c,m))?sum(map(b->c(a$b),m)):1/0,l);
  find(n.==minimum(n).!=1/0)-1
)

এখন, শেষ দুটি লাইন বিস্তারিত:

mean(map(c,m)) প্রতি ইনপুট অঙ্কের রেখার গড় সংখ্যা গণনা করে।

n=map(a->...,l) সমস্ত অঙ্কের ভেক্টর উপস্থাপনের উপর লুপ করে।

আমাদের বর্তমান অঙ্কের রেখার সংখ্যা যদি aইনপুটটির গড় লাইনক্যান্টের সাথে অসম হয় তবে ফিরে আসুন inf

c(a)==mean(map(c,m))?...:1/0

যদি তা না হয় তবে আমাদের বর্তমান এবং সমস্ত ইনপুট সংখ্যার মধ্যে হামিং দূরত্বের যোগফল দিন return

sum(map(b->c(a$b),m))

আমাদের সংখ্যার প্রতিনিধিত্বকারী nদৈর্ঘ্যের একটি ভেক্টর রয়েছে যা 10সেই সংখ্যায় 0-9সমস্ত ইনপুট ডিজিটকে ট্রান্সফর্ম করতে আমাদের সংযোজন / মুছে ফেলার মোট সংখ্যা দেয় বা infলাইন সংখ্যা পরিবর্তন না করে যদি এমন রূপান্তর অসম্ভব হয় তবে।

find(n.==minimum(n).!=1/0)-1

অবশেষে, সমস্ত মিনিমার অবস্থানগুলি (0-ভিত্তিক) আউটপুট করুন যা নয় inf

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