আলোকসজ্জা, 7-বিভাগের সংস্করণ


14

কিছু বিভাগগুলি চালু এবং কিছু বন্ধ সহ একটি 7-সেগমেন্ট ডিসপ্লে দেওয়া, অঙ্কগুলির ক্রম (0-9) সন্ধান করুন, যেমন প্রতিটি অঙ্কের জন্য সংশ্লিষ্ট বিভাগগুলিকে টগল করার পরে, সমস্ত বিভাগগুলি বন্ধ হয়ে যায়।

উদাহরণ

  _
  _    [3] =>     |   [1] =>    [OFF]
  _               |

নম্বর এবং তাদের সম্পর্কিত বিভাগগুলি:

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

বিধি

কোডগল্ফ ⊨ স্বল্পতম এন্ট্রি জয়।

ইনপুট

খালি খালি খন্ডের তালিকা যা স্যুইচ করা আছে, হিসাবে দেওয়া আছে

  1. সংখ্যার ক্রম। বিভাগগুলি উপরে থেকে নীচে, বাম থেকে ডানদিকে গণনা করা হয়েছে; 0 বা 1 থেকে শুরু করে নম্বরগুলি ক্রমযুক্ত হওয়া দরকার না।

  2. একটি একক 7-বিট ডিজিট। এমএসবি / এলএসবি নির্দিষ্ট করা হয়নি (সুতরাং আপনি এটি চয়ন করতে পারেন)।

সংখ্যার মধ্যে অ-সংখ্যাসূচক অক্ষর অনুমোদিত (তবে সমর্থন করার প্রয়োজন নেই)।

যেমন। সংখ্যার জন্য 7: 136বা 1010010বা0100101

আউটপুট

সংখ্যার একটি ক্রম প্রদর্শনটিতে "প্রয়োগ" করা হবে। কোনওভাবেই সীমাবদ্ধ নয় যেমন অঙ্কের ক্রম। যেমন। জন্য প্রারম্ভিক রাষ্ট্রের সংখ্যা সংশ্লিষ্ট 1, বৈধ আউটপুট হবে 1, 111, 010, ইত্যাদি

একটি বিকল্প আউটপুট একটি 10-বিট ডিজিট (আবার, এমএসবি / এলএসবি আপনার পছন্দ)। যেমন। জন্য 1যেমন ইনপুট, আউটপুট হবে 1000000000বা 0000000001

কিছু সংমিশ্রণে কয়েকটি পুনরাবৃত্তিযোগ্য সমাধান রয়েছে, যেমন eg বড় হাতের অক্ষরের সাথে সম্পর্কিত বিভাগগুলি Hদ্বারা বন্ধ করা যেতে পারে 013, তবে এবং 489এবং 0258

যদি কোনও সমাধান বিদ্যমান না থাকে (যা আমি বিশ্বাস করি যে এটি সম্ভব নয়), আউটপুট খালি।


2
এটি আরও স্পেসিফিকেশন প্রয়োজন। প্রতিটি বিভাগে কোন বিভাগগুলি অন্তর্ভুক্ত করা হয়েছে (উদাহরণস্বরূপ, 9 টি নীচের অংশটিকে অন্তর্ভুক্ত করে?) দয়া করে সমস্ত অঙ্কগুলি আঁকুন এবং প্রতিটিতে অন্তর্ভুক্ত বিভাগগুলির সংখ্যা নির্দেশ করুন।
স্তর নদী সেন্ট

এছাড়াও, ইনপুট জন্য কোন ফর্ম্যাট অনুমোদিত? বিভাগের নম্বরগুলি কি ক্রমানুসারে দেওয়া হবে? সমাধান না হলে আমরা কী করব?
স্তর নদী সেন্ট

"কিছু সংমিশ্রণে বহুবিধ পুনরাবৃত্তিযুক্ত সমাধান রয়েছে" এছাড়াও, কোনও সমাধানের কোনও অনুচ্ছেদই অন্য সমাধান, তাই না? (যেমন 301জন্য H)।
আর্নৌল্ড

1
প্রমাণ যে কোনও সমাধান সর্বদা উপস্থিত থাকে: প্রতিটি পৃথক বিভাগের জন্য সমাধানগুলি খুঁজে পাওয়া যথেষ্ট। অনুভূমিক অংশ জন্য সমাধান, উপর থেকে নীচে হয় 17, 08এবং 1479। উপরের উল্লম্ব বিভাগগুলির, বাম থেকে ডানে জন্য সমাধান হয় 39এবং 59। নিম্ন উল্লম্ব বিভাগগুলির, বাম থেকে ডানে জন্য সমাধান হয় 56এবং 2389
গ্রেগ মার্টিন

1
@GregMartin 2সবসময় প্রয়োজন হয় না, কারণ আপনি এটা হয় সঙ্গে প্রতিস্থাপন করতে পারেন 0468, 1358অথবা 1369, কিনা আপনি চান একটি নির্ভর করে 0, 8বা 9আপনার উত্তর, কিন্তু দূর করার কোন উপায় 7এ সব এবং আমার মনে হয় অন্তত একটি এ আছে এর 1এবং 3
নীল

উত্তর:


4

জেলি , 26 25 বাইট

2ṗ⁵’µ×“wØ][:koR¶{‘^/=µÐfḢ

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

7-বিট পূর্ণসংখ্যা হিসাবে ইনপুট নেয়। 10-বিট পূর্ণসংখ্যার বাইনারি ফর্মটি প্রদান করে।

এটি কেবল হিংস্র সমস্ত সম্ভাবনা জোর করে। সমস্ত সম্ভাব্য আউটপুট পেতে সরান বা Xএলোমেলোভাবে সম্ভব আউটপুট পেতে এটির সাথে প্রতিস্থাপন করুন।

ম্যাজিক ভিজ্যুয়ালাইজেশন প্রোগ্রাম!

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

2ṗ⁵’µ×“wØ][:koR¶{‘^/=µÐfḢ  - main link, takes one integer
2ṗ⁵’                       - generate all length-10 binary arrays
    µ                µÐf   - now we find those arrays which correspond to digit-
                              sequences which work to switch off all segments:
                              Filter (keep) those arrays which:
     ×                      - multiplied by 
      “wØ][:koR¶{‘          - [119, 18, 93, 91, 58, 107, 111, 82, 127, 123] 
                               (encoding for turned-on segments given number)
                  ^/        - reduced by XOR
                    =      - are equal to (implicit) the program's input
                        Ḣ  - output the first of these valid arrays

1
সংখ্যার অ্যারেতে ( “wØ][:koR¶z‘) একটি ত্রুটি থাকতে পারে। আপনার নম্বরটিতে 9নীচের অংশটি অভাবের সাথে রয়েছে ( 9আপনার বর্ণনার সাথে টাস্ক বর্ণনার সাথে তুলনা করুন )। নাহলে খুব সুন্দর, বিশেষ করে দর্শন!
কিরিল

1
@ কিরিল ফিক্সড! আক্ষরিক তালিকায় সামান্য পরিবর্তন প্রয়োজন।
ফায়ার ফ্লেম 241

2

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

n=>[65,35,55,42,48,54,110].reduce((r,v,i)=>r^=n>>i&1&&v+v,0)

এটি কাজ করে কারণ:

  • 1 এবং 7 টগলিং কেবল শীর্ষ বিভাগকে টগল করে
  • টোগলিং 1, 2 এবং 6 টোগলগুলি কেবল শীর্ষ বাম বিভাগকে টগল করে
  • টোগলিং 1, 2, 3, 5 এবং 6 টোগল কেবল শীর্ষ ডান অংশে
  • টোগলিং 2, 4 এবং 6 শুধুমাত্র কেন্দ্রের বিভাগকে টগল করে
  • 5 এবং 6 টগলিং কেবল নীচের বাম বিভাগকে টগল করে
  • টগলিং 2, 3, 5 এবং 6 কেবল নীচের ডান অংশকে টগল করে
  • টগলিং 2, 3, 4, 6 এবং 7 কেবল নীচের অংশটিকে টগল করে

1
এটিকে বিজয়ী হিসাবে গ্রহণ করা উচিত কিনা তা নিশ্চিত নন, কারণ আপনি অবশ্যই আরনাউল্ডের কাছ থেকে কিছুটা অনুপ্রেরণা নিয়েছিলেন। তবে তারপরে, তিনি আপনার মন্তব্য থেকে কিছুটা অনুপ্রেরণা নিয়েছিলেন। যাইহোক, সুন্দর উত্তর, আপনি উভয়!
কিরিল

@ ক্যারিল আমার আপডেট করা উত্তরটিও নীলের একটি পরামর্শ ছিল। তাঁর উত্তর এখনও পর্যন্ত জিতেছে তাতে সন্দেহ নেই।
আর্নল্ড

2

জাভাস্ক্রিপ্ট (ES6), 117 107 101 86 84 বাইট

নীলকে ধন্যবাদ 15 বাইট

7-বিট পূর্ণসংখ্যার হিসাবে ইনপুট নেয়, যেখানে এলএসবি হ'ল উপরের অংশ। 10-বিট পূর্ণসংখ্যায় ফিরে আসে যেখানে এলএসবি সংখ্যা হয় 0

f=(n,k)=>[83,0,57,73,10,71,87,1,91,75].reduce((n,v,i)=>n^=k>>i&1&&v+36,n)?f(n,-~k):k

ডেমো


1
Recursion খাটো: f=(n,k=1023)=>[83,0,57,73,10,71,87,1,91,75].reduce((n,v,i)=>n^=k>>i&1&&v+36,n)?k--&&f(n,k):k। অথবা আপনি যদি ধরে নেন যে কোনও উত্তর উপস্থিত রয়েছে f=(n,k=0)=>[83,0,57,73,10,71,87,1,91,75].reduce((n,v,i)=>n^=k>>i&1&&v+36,n)?f(n,k+1):k,।
নিল

1
@ নীল ধন্যবাদ! হ্যাঁ, একটি উত্তর সর্বদা বিদ্যমান।
আর্নল্ড

1
এটা সবসময় সম্ভব হিসেবে একটি উত্তর সংখ্যা ব্যবহার করে তৈরি করতে 1-7, আপনি সরিয়ে আরও 8 বাইট সংরক্ষণ করতে পারবেন 83এবং ,91,75এবং ব্যবহার k+2
নিল

2

গণিত, 40 বাইট

BitXor@@{260,802,10,514,3,266,293}[[#]]&

(প্রতিটি বিভাগের যত্ন সহকারে আউটপুট নির্বাচন করে এটি আরও গল্ফ করা যেতে পারে এবং এলএসবি এবং এমএসবি-র মধ্যে স্যুইচ করুন))

উদাহরণস্বরূপ পজিশনের তালিকা হিসাবে ইনপুট নিন এবং এমএসবি অর্ডারে {2,4,5,7}একটি 10-বিট সংখ্যা ( 384= 0110000000বাইনারি) আউটপুট নিন (0, ..., 9)।

উদাহরণে এটি সম্পর্কিত

  |_
  |_

এবং আউটপুট অনুরূপ {7,8}

ব্যাখ্যা:

যাদু সংখ্যা (হার্ডকোডযুক্ত তালিকা) হ'ল আউটপুট যা প্রতিটি বিভাগের জন্য ফিরে আসে। (বাইনারিতে এনকোড করা) এবং, যদি কোনও সংখ্যা তালিকায় দু'বার উপস্থিত হয়, তবে প্রভাবটি একই রকম হয় যা প্রদর্শিত হচ্ছে না, তাই বিটওয়াইজ এক্সওআর ব্যবহৃত হয়। আমাদের কেবল খণ্ডগুলি চালু করার সম্ভাব্য মানের আউটপুটটি XOR করা দরকার।


2

জেলি , 12 বাইট

ị“A#7*06n‘^/

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

এটি জোর করে না এবং এটি আমার অন্যান্য সমাধানের তুলনায় খুব কম। অন-সেগমেন্টগুলির তালিকার হিসাবে ইনপুট নেয় এবং এলএসবি শীর্ষস্থান হিসাবে আউটপুট দেয়।

অঙ্কের চালগুলির তালিকা হিসাবে আউটপুট।

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

এটি দ্রুত হতে চলেছে

ị“A#7*06n‘^/ - main link, takes input as a list of turned-on segments (eg. [1,3,6])
 “A#7*06n‘   - list literal [65,35,55,42,48,54,110] where each element is a 7-bit
                 integer, where each integer corresponds to how to turn off
                 a segment (eg. turn off the first segment with 7 and 1 =>2^7+2^1=>64)
ị            - get the elements in the list corresponding to the input indices
          ^/ - XOR reduce these elements to get a single 7-bit integer

আপনি কি এই সত্যটির সদ্ব্যবহার করতে পারবেন না যে এই অ্যালগরিদমটি ব্যবহার করার সময় পুনরাবৃত্তিমূলক সমাধানগুলি মঞ্জুরিপ্রাপ্ত, সংক্ষিপ্ত কিছু (যেমন একটি সমতল) এর সাথে এক্সওর-কমানোর প্রতিস্থাপনের জন্য? নাকি আমি কিছু মিস করছি?

আমার কাছে যে 1*use digit 1 + 2*use digit 2 + 4*use digit 3 ... 64*use digit 7কোডটি রয়েছে সেহেতু এখন প্রায় সমান সমান 7-বিট পূর্ণসংখ্যার একটি তালিকা তৈরি করে , তারপরে এক্সওআর তাদের @ ais523 হ্রাস করে। সমতলকরণ ব্যবহৃত অঙ্কগুলির তালিকায় কাজ করবে যা আরও বেশি অক্ষর লাগে।
ফায়ার ফ্লেম 241
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.