এগুলি কি সংখ্যা?


22

আমি সংখ্যা লেখার সময় আমি কিছুক্ষণ পরে লক্ষ্য করেছিলাম যে আমার কীবোর্ডটিতে Shiftকীটি টিপানো এবং অবরুদ্ধ ছিল এবং আমি যা লিখেছি তা হ'ল $%&অক্ষরের মতো। আরও খারাপ, আমি ইংরাজী এবং স্প্যানিশ কীবোর্ড লেআউটগুলির মধ্যে স্যুইচ করে যাচ্ছিলাম তাই আমি জানি না যে আমি প্রতিটি সংখ্যার জন্য কোনটি ব্যবহার করেছি।

চ্যালেঞ্জ

প্রতীক অক্ষরযুক্ত একটি স্ট্রিং দেওয়া, অনুমান করার চেষ্টা করুন যে আমি কোন সংখ্যাটি লিখেছি। আমার কীবোর্ড Shiftটিপে টিপে সংখ্যাগুলির জন্য নিম্নলিখিত অক্ষর তৈরি করে :

1234567890
----------
!"·$%&/()=  Spanish layout
!@#$%^&*()  English layout
  • ইনপুটটি উপরের চিহ্নগুলির সমন্বয়ে একটি নন, নন-খালি স্ট্রিং হবে।
  • স্ট্রিং থেকে কীবোর্ড লেআউটটি অনুমান করা যেতে পারে তবে আউটপুটটি একক সংখ্যা হবে (উদাহরণস্বরূপ যদি স্ট্রিংটিতে @একটি ইংরাজী বিন্যাস ব্যবহৃত হয়, এবং যদি স্ট্রিংটিতে "একটি স্প্যানিশ লেআউট থাকে তবে) অথবা যদি সংখ্যাটি একই হয় উভয় বিন্যাস (অর্থাত্ ইনপুটটি !$যা 14উভয় বিন্যাস হিসাবে অনুবাদ করে ); অন্যথায় আউটপুট উভয় বিন্যাসের জন্য দুটি সম্ভাব্য সংখ্যা হবে যদি এটি অনুমান করা যায় না এবং ফলাফলগুলি পৃথক হয়।
  • ইনপুট স্ট্রিং সর্বদা একটি একক বিন্যাসে লেখা থাকবে। সুতরাং আপনাকে "@ইনপুট হিসাবে আশা করার দরকার নেই ।

উদাহরণ

Input  -->  Output
------------------
/()         789        (Spanish layout detected by the use of /)
$%&         456,457    (Layout cannot be inferred)
!@#         123        (English layout detected by the use of @ and #)
()&!        8961,9071  (Layout cannot be inferred)
((·))       88399      (Spanish layout detected by the use of ·)
!$          14         (Layout cannot be inferred but the result is the same for both)
!!$$%%      114455     (Layout cannot be inferred but the result is the same for both)
==$"        0042/42    (Spanish layout, if a number starts with 0 you can choose to
                       omit them in the result or not)

Single character translations:
------------------------------
!   1    
"   2
·   3
$   4
%   5
&   6,7
/   7
(   8,9
)   9,0
=   0
@   2
#   3
^   6
*   8

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


এটি ডাং করুন, এটি ·চ্যালেঞ্জিং ...
এরিক দি আউটগল্ফার

2
@ এরিকথ আউটগলফার আসলে ·স্প্যানিশদের পক্ষে অকেজো, এটি কেবল কাতালান ভাষায় ব্যবহৃত হয়।
চার্লি 20

{(8, 9, 6, 1), (9, 0, 7, 1)}(চতুর্থ পরীক্ষার ক্ষেত্রে) আউটপুট কি গ্রহণযোগ্য?
লিন 21

@ লিন হ্যাঁ, এটি।
চার্লি 21

2 সংখ্যা আউটপুট দেওয়ার সময়, অর্ডারটি কী ব্যাপার?
শেগি

উত্তর:


6

জেলি , 32 31 বাইট

O“=!"Ṣ$%&/()“)!@#$%^&*(‘iⱮ€PƇ’Q

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

  • -1 বাইটস এরিক দি আউটগলফারকে ধন্যবাদ

O“!"Ṣ$%&/()=“!@#$%^&*()‘iⱮ€PƇ%⁵Q
O                                  ord of each character in the input
 “!"Ṣ$%&/()=“!@#$%^&*()‘           Constant that yields the list:
                                      [[33, 34, 183, 36, 37, 38, 47, 40, 41, 61],
                                       [33, 64, 35, 36, 37, 94, 38, 42, 40, 41]
                          €        For each list of numbers:
                         Ɱ           For each ord of the characters in the input:
                        i              Find the index of the ord of the character
                                       in the list of numbers.
                                       If the number is not found, `i` returns zero
                                       which means it's a character from only one
                                       keyboard.
                                   There are now two lists of numbers 1-10.
                            Ƈ      Keep the list(s) that: 
                           P         have nonzero product.
                             %⁵    Modulo 10. This maps 10->0.
                               Q   Unique elements. This removes duplicates if the two numbers are the same.



4

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

{set grep {!/\D/},TR'=!"·$%&/()'0..9',TR')!@\x23$%^&*('0..9'}

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

একটি সেট ফেরত দেয়। ( সন্ধান তালিকাগুলিতে # রাকুদোর পরিচালনার ক্ষেত্রে কোনও বাগ না থাকলে দুটি বা তিনটি বাইট সংক্ষিপ্ত করা যায় ))


3

জাভা (জেডিকে) , 173 বাইট

Golfed

c->{String s="",e=s;var m="21#3457#908###6##12#456389###0#7".split("");for(int l:c){e+=m[l=l%16];s+=m[l+16];}return s.equals(e)|s.contains("#")?e:e.contains("#")?s:s+","+e;}

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


Ungolfed

c->{                                                      // Lamdba taking char array as input
    String s="",e=s;                                      // Initialise Spanish and English strings
    var m="21#3457#908###6##12#456389###0#7".split("");   // Create magic hashing lookup array (see below)
    for(int l:c){                                         // Loops through all chars in input
        e+=m[l=l%16];                                     // Get english number from array and append
        s+=m[l+16];                                       // Get Spanish number from array and append
    }
    return s.equals(e)|s.contains("#")?e:                 // If equal or Spanish is invalid return english
        e.contains("#")?s:                                // If English is invalid return Spanish
        s+","+e;                                          // If both are valid but not equal, return both
}


ম্যাজিক হ্যাশিং লুকআপ অ্যারে

মানগুলির সাথে কিছু পরীক্ষা-নিরীক্ষার পরে আমি বুঝতে পারি যে !"·$%&/()=@#^*মডুলোর 16 অক্ষরের প্রতিটি ASCII মান একটি অনন্য সংখ্যা দেয়। 'জাদু হ্যাশ লুকআপ অ্যারে' এই সূচিতে দোকানে ইংরেজি এই অনন্য সূচিতে প্রতিটি অক্ষর সঙ্গে যুক্ত সংখ্যা, এবং স্প্যানিশ সংখ্যার প্রতিটি 16 পুষিয়ে, এরে প্রতিটি ভাষার জন্য তুচ্ছ থেকে প্রয়োজনীয় সংখ্যক আনার সময় করে। একটি হ্যাশ কোনও ভাষার জন্য অবৈধ মানগুলির জন্য সংরক্ষণ করা হয়।


আমি মনে করি না আপনি এই সংক্ষিপ্ত করতে চ্যারআরাই () এবং ইনট মানগুলি ব্যবহার করতে পারেন? (কেবল একটি ধারণা, আমি এটি এখনও চেষ্টা করি নি।)
কুইনটেক

@ কুইন্টেক আমি এটি চেষ্টা করেছিলাম, তবে ইনট মানটিতে toCharArray()প্রয়োগ করা হবে এমন অতিরিক্ত বাইটস এবং হিসাবটি এটি উভয় .contains()স্টেটমেন্টের চেয়ে দীর্ঘতর করে তুলেছে ।
লুক স্টিভেন্স

s.equals(e)|s.contains("#")হতে পারে s.matches(e+"|.*#.*")
কেভিন ক্রুজসেন


2

জেলি , 38 বাইট

183Ọ“=!"“$%&/()”j,“)!@#$%^&*(”iⱮ€⁸ẠƇ’Q

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


নিস! কেবল একটি প্রশ্ন, আমি আপনার কোডটি ইনপুট সহ ()বা (())হিসাবে চেষ্টা করেছি , তবে আপনার কোডটি কিছুই দেয় না। আমি মনে করি জেলি ইনপুট হিসাবে যা পান তার সাথে এটি সীমাবদ্ধতা?
চার্লি 21

1
@ চার্লি সাথে '()'এবং '(())'যথাক্রমে চেষ্টা করুন । হ্যাঁ, আপনি যদি যুক্তিটি উদ্ধৃতি না দিয়ে থাকেন তবে এটি কেবলমাত্র একটি স্ট্রিং হিসাবে ইনপুট করা হবে যদি এটি evalপাইথন 3 এর মানকে উত্সাহিত করা যায় না ।
এরিক আউটগল্ফার

2

রেটিনা 0.8.2 , 60 বাইট

.+
$&¶$&
T`=!"·$%&/()`d`^.+
T`)!@#$%^&*(`d`.+$
D`
Gm`^\d+$

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.+
$&¶$&

ইনপুট সদৃশ।

T`=!"·$%&/()`d`^.+
T`)!@#$%^&*(`d`.+$

আলাদা আলাদা কীবোর্ড লেআউট অনুযায়ী প্রতিটি লাইন অনুবাদ করার চেষ্টা করুন।

D`

ফলাফলটি নকল করুন।

Gm`^\d+$

কেবলমাত্র লাইন রাখুন যাতে কেবলমাত্র অঙ্ক থাকে।


mআপনার শেষ পর্যায়ে আপনার কি দরকার ?
ovs

@ ওভস হ্যাঁ, মিলগুলি প্রথমে চলে এবং তারপরে লাইনগুলি বিভক্ত হয় এবং ম্যাচগুলি সমেত লাইনগুলি রাখা হয়।
নিল


1

05AB1E , 42 41 বাইট tes

•Hhç₁d©u÷^Σ(“ðΣèõĆ
-•184в2äεIÇk}ʒ®å_}>T%Ù

@Llnan এর জেলি উত্তর পোর্ট ।

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Hhç₁d©u÷^Σ(“ðΣèõĆ
-•184в           # Compressed list [33,34,183,36,37,38,47,40,41,61,33,64,35,36,37,94,38,42,40,41]
      2ä         # Split into two parts: [[33,34,183,36,37,38,47,40,41,61],[33,64,35,36,37,94,38,42,40,41]]
ε   }            # Map each inner list to:
 IÇ              #  Get the input, and convert each character to its unicode value
   k             #  Then get the index of each unicode value in the current map-list
                 #  (this results in -1 if the item doesn't exist)
     ʒ   }       # Filter the resulting list of indices by:
      ®å_        #  If the inner list does not contain any -1
          >      # Increase each index by 1 to make it from 0-indexed to 1-indexed
           T%    # Take modulo-10 to convert 10 to 0
             Ù   # Uniquify the result-lists (and output implicitly)

আমার এই 05AB1E টিপটি দেখুন (বিভাগটি সংখ্যার তালিকাগুলি কীভাবে সংহত করতে হয়? ) কেন •Hhç₁d©u÷^Σ(“ðΣèõĆ\n-•184вতা বোঝার জন্য [33,34,183,36,37,38,47,40,41,61,33,64,35,36,37,94,38,42,40,41])। এই (একত্রে সঙ্গে ) স্ট্রিং এর ইউনিকোড মান গ্রহণ 1 টির বাইট খাটো: '""!ÿ·$%&/()=""!@#$%^&*()"‚Ç


!$এবং !!$$%%মামলা করা উচিত আউটপুট শুধুমাত্র ফলে এক নম্বর উভয় লেআউট জন্য একই এবং কোন অস্পষ্টতা নেই।
চার্লি

@ চার্লি উফস, স্থির
কেভিন ক্রুইজসেন


1

পরিষ্কার , 116 বাইট

import StdEnv,Text
$s=removeDup[foldl(<+)""d\\r<-["=!\"·$%&/()",")!@#$%^&*("],d<-[[indexOf{c}r\\c<-s]]|all((<) -1)d]

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

ইনপুট নেয় এবং সিপি 437 এ এনকোড হয়। টিআইও কেবল ইউটিএফ -8 সমর্থন করে, তাই কেন্দ্রের বিন্দুর সাথে মিলিয়ে আক্ষরিক বাইট মান 250 (এক বাইট হিসাবে গণ্য) পাওয়ার জন্য ডেমো কোডটিতে একটি পালানো ব্যবহার করা হয়।


!$%ইনপুট উচিত আউটপুট মাত্র এক নম্বর, না দুই, ফলে উভয় বিন্যাস জন্য একই।
চার্লি

@ চার্লি এটি স্থির করে দিয়েছে।
ousurous

1

এপিএল (ডায়ালগ) , 40 বাইট

বেনামে ট্যাসিট উপসর্গ কার্য। যদিও অব্যবহৃত, · Dyalog সিঙ্গেল বাইট ক্যারেক্টার সেট হয় । 0-ভিত্তিক সূচক ( ⎕IO←0) ধরে রাখুন যা অনেক সিস্টেমে ডিফল্ট।

{∪⍵/⍨~10∊¨⍵}'=!"·$%&/()' ')!@#$%^&*('⍳¨⊂

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

 পুরো যুক্তি

'=!"·$%&/()' ')!@#$%^&*('⍳¨ এই স্ট্রিংগুলির প্রতিটিতে অক্ষরের সূচক

{∪⍵/⍨~10∊¨⍵} নিম্নলিখিত লাম্বদা প্রয়োগ করুন ( যুক্তিটি হ'ল)

10∊¨⍵ প্রতিটি সংখ্যার তালিকার জন্য, 10 (ইঙ্গিত "পাওয়া যায়নি") এর সদস্য কিনা

~ স্থানীয় অবহেলা (যেমন কেবলমাত্র যেখানে সমস্ত অঙ্ক পাওয়া যায়)

⍵/⍨ তর্ক দিয়ে ফিল্টার করুন

 এর অনন্য উপাদানগুলি সন্ধান করুন


0

ডার্ট , 125 বাইট

f(s)=>['=!"·\$%&/()',')!@#\$%^&*('].map((b)=>s.split('').map((e)=>b.indexOf(e)).join()).where((e)=>!e.contains('-')).toSet();

অসমাপ্ত:

f(s){
  ['=!"·\$%&/()',')!@#\$%^&*(']
    .map(
      (b)=>s.split('').map((e)=>b.indexOf(e))
      .join()
    ).where(
      (e)=>!e.contains('-')
    ).toSet();
}
  • 0 থেকে 9 পর্যন্ত দুটি নির্দিষ্ট কী মান সহ একটি অ্যারে তৈরি করে
  • তাদের প্রত্যেকের জন্য, অক্ষরের সূচকগুলি ব্যবহার করে ইনপুট স্ট্রিংটিকে সংশ্লিষ্ট সংখ্যায় রূপান্তর করুন
  • একটি সংখ্যা তৈরি করতে ফলাফল অ্যারে যোগদান করুন
  • একটি '-' থাকা যেকোন সংখ্যা মুছে ফেলুন (সূচি ফেরত -1 যখন সূচিপত্র যখন কোনও অক্ষর খুঁজে না পায়)
  • সদৃশ সরানোর জন্য সেট হিসাবে ফিরে আসুন

এটি ডার্টপ্যাডে চেষ্টা করে দেখুন!


0

টি-এসকিউএল, 143 বাইট

SELECT DISTINCT*FROM(SELECT TRY_CAST(TRANSLATE(v,m,'1234567890')as INT)a
FROM i,(VALUES('!"·$%&/()='),('!@#$%^&*()'))t(m))b
WHERE a IS NOT NULL

ইনপুট পূর্ব বিদ্যমান টেবিল মাধ্যমে নেওয়া হয় আমি varchar ক্ষেত্র সহ বনাম , আমাদের আই মান অনুযায়ী

দুটি পৃথক চরিত্রের স্ট্রিংয়ের সাথে ইনপুট টেবিলটিতে যোগদান করে, তারপরে স্বতন্ত্র অক্ষরগুলি সরিয়ে নিতে নতুন এসকিউএল 2017 ফাংশনটিTRANSLATE ব্যবহার করে এবং TRY_CASTআমাদের সংখ্যার সাথে শেষ হয় কিনা তা দেখার জন্য। যদি না হয়, TRY_CASTফিরে আসে NULL

চূড়ান্ত SELECT DISTINCTবাহ্যিকটি অভিন্ন ফলাফলগুলিকে একত্রিত করে এবং ফিল্টার আউট করে NULLS

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