সাধারণ ডিটিএমএফ ডিকোডিং: ফোন কীটি সন্ধান করুন!


11

এটি একটি সহজ চ্যালেঞ্জ যা আশাবাদী কিছু সৃজনশীল উত্তর হতে পারে।

উইকিপিডিয়াকে উদ্ধৃত করে : "ডুয়াল-টোন মাল্টি-ফ্রিকোয়েন্সি সিগন্যালিং (ডিটিএমএফ) টেলিফোন সরঞ্জাম এবং অন্যান্য যোগাযোগের ডিভাইস এবং স্যুইচিং সেন্টারগুলির মধ্যে টেলিফোন লাইনে ভয়েস-ফ্রিকোয়েন্সি ব্যান্ড ব্যবহার করে একটি ইন-ব্যান্ড টেলিকমিউনিকেশন সিগন্যালিং সিস্টেম।"

কার্য

নিম্নলিখিত সারণিতে কলাম এবং সারি ফ্রিকোয়েন্সি উপস্থাপন করে দুটি পূর্ণসংখ্যা দেওয়া আপনার কাজটি সংশ্লিষ্ট কী আউটপুট করা হবে:

       | 1209 Hz | 1336 Hz | 1477 Hz
-------+---------+---------+---------
697 Hz |    1    |    2    |    3
770 Hz |    4    |    5    |    6
852 Hz |    7    |    8    |    9
941 Hz |    *    |    0    |    #

উদাহরণ

  • যদি ইনপুট হয় [ 1209, 852 ], প্রত্যাশিত আউটপুট "7"।
  • যদি ইনপুট হয় [ 1477, 941 ], প্রত্যাশিত আউটপুট "#"।

বিধি

  • আপনাকে অবশ্যই কোনও যুক্তিসঙ্গত বিন্যাসে পূর্ণসংখ্যা হিসাবে ইনপুট নিতে হবে, যেমন দুটি পৃথক ভেরিয়েবল বা দুটি ভেরিয়েবলের অ্যারে। আপনার প্রোগ্রামটি কোন ক্রমে তাদের প্রত্যাশা করছে তা নির্দিষ্ট করুন ( কলাম_ফ্রেইক, সারি_ফ্রেইক বা সারি_ফ্রেইক, কলাম_ফ্রেইক )।
  • ইনপুটটি বৈধ হওয়ার গ্যারান্টিযুক্ত।
  • আপনার অবশ্যই একটি অক্ষর মুদ্রণ বা আউটপুট করতে হবে । তবে, আপনাকে ডিজিট কীগুলির জন্য একটি পূর্ণসংখ্যা আউটপুট করার অনুমতি দেওয়া হয়।
  • এটি , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর!

উত্তর:


2

জেলি , 19 বাইট

DḢ×3++6ị9R;“*0#  ”¤

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

যেমন ইনপুট লাগে row, columnদুটি আর্গুমেন্ট।

এটি 3*<first digit of row> + <column> + 6 % 14প্রতিটি জন্য আলাদা মান দিতে ব্যবহার করে। এটি [1,2,3,4,5,6,7,8,9,"*","0","#"," "," "]আউটপুট দিতে সূচিযুক্ত হয় । স্পেসগুলি সত্যই কোনও চরিত্র হতে পারে; তারা একটি অন্তর্নিহিত মডেল 14 তৈরি করতে কেবল বাফার।

নিম্ন স্তরের

DḢ×3++6ị9R;“*0#  ”¤
D                     - digits (of <row>)
 Ḣ                    - head (get first element)
  ×3                  - multiply by 3
    +                 - add (<column>)
     +6               - add 6
       ị              - index into:
                  ¤   - the nilad:
        9R              - range(9)
          ;             - concatenate
           “*0#  ”      - the string "*0#  "

8

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

a=>b=>"310*58# 47269"[a%b%83%16%13]

সীমার মধ্যে সংখ্যার দুই ইনপুট মানচিত্রের [0, 13)গণক দ্বারা:
col % row % 83 % 16 % 13
বাক্য সিনট্যাক্স ( f(col)(row)) ইনপুট নেয় এবং একটি একক-চর স্ট্রিং দেয় returns

পরীক্ষার কেস

ইতিহাস

[0, 20)গণনার সাথে পরিসীমা নিয়ে শুরু হয়েছিল col % row % 29 % 20, যার জন্য ম্যাপিংয়ে 8 টি নষ্ট অক্ষর প্রয়োজন।


4

হাস্কেল, 42 37 বাইট

x#y="_1425__#9__*70836"!!mod(2*x+y)18

একটি স্ট্রিং সূচক করতে কিছু গণিত। ইনপুট অর্ডার <column> # <row>, যেমন 1336 # 697

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

সম্পাদনা: @ ফ্লোয়ার একটি সূত্র খুঁজে পেল যা সংক্ষিপ্ত স্ট্রিংয়ে কাজ করে। সামগ্রিক -5 বাইট। ধন্যবাদ!


1
আমি আপনার পদ্ধতির অনুকূলকরণের জন্য কেবল একটি সামান্য প্রোগ্রাম লিখেছি এবং এটি প্রদর্শিত হয় আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন:x#y="_1425__#9__*70836"!!mod(2*x+y)18
flawr

3

এমএটিএল , 23 বাইট

13*+79\'186#294*3750'w)

ইনপুটগুলি হ'ল: কলাম ফ্রিকোয়েন্সি, তারপরে সারি ফ্রিকোয়েন্সি।

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

ব্যাখ্যা

কলামের ফ্রিকোয়েন্সি 13 দ্বারা গুণমান, সারি ফ্রিকোয়েন্সি যুক্ত করা এবং মডুলো 79 গণনা 12 জোড়া ইনপুটগুলির প্রত্যেকটির জন্য আলাদা মান দেয়।

13*               % First input (implicit) times 13
+                 % Add to second input (implicit)
79\               % Modulo 79
'186#294*3750'    % Push this string
w                 % Swap
)                 % Index



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