গার্বড ফোন নম্বর


19

আপনি কীভাবে ভয়েসমেইল বার্তা পান এবং সেই ব্যক্তির সংযোগটি দুর্দান্ত ছিল না তা আপনি কীভাবে ফিরে আসতে পারেন তা নির্ধারণ করার চেষ্টা করছেন তবে আপনি নিশ্চিত নন যে এটি "5" বা "8" ছিল কিনা বলেন?

এটাই এই চ্যালেঞ্জ।

সুসংবাদটি হ'ল কলার তাদের নাম্বারটি দুটি বার পড়েছিলেন, তবে এটি উভয় জায়গায়ই সমাগত।

আপনার প্রোগ্রামটির মতো ইনপুট নেওয়া উচিত:

5551231234 / 5551231234

যেখানে প্রথম দশ অঙ্কটি প্রথমবার ভয়েস মেইলে ফোন নম্বরটি বলা হয় এবং দ্বিতীয় সেটটি দ্বিতীয়বার বলা হয়। কেবল ... এটি আরও দেখতে পাবেন:

555?ABC1_36? / 55?522_1?234
  • প্রশ্ন চিহ্নের পরে একটি অঙ্ক অর্থ হ'ল সেই অঙ্কটির জন্য এটি সর্বোত্তম অনুমান (যেমন "5?" এর অর্থ "সম্ভবত একটি 5, পুনরাবৃত্তির সাথে তুলনা করুন")।
  • একটি আন্ডারস্কোর একটি পরিচিত অনুপস্থিত অঙ্কটি নির্দেশ করে, স্থির দ্বারা একেবারেই অদ্ভুত কিছু এটিকে ডিক্রিফের করার মতো নয়।
  • চিঠিগুলি হ'ল অক্ষর। তাদেরকে তাদের নিজ নিজ সংখ্যা হিসাবে বিবেচনা করুন
    • এবিসি -> 2, ডিএফ -> 3, জিএইচআই -> 4, জেকেএল -> 5, এমএনও -> 6, পিকিউআরএস -> 7, টিইউভি -> 8, ডাব্লুএক্সওয়াইজ -> 9
    • সমস্ত নমুনা ইনপুটগুলি বড় হাতের অক্ষর ব্যবহার করে (আপনি নিরাপদে কোনও টুপার () কল বাদ দিতে পারেন)
    • যদি আপনার ভাষা নিম্ন ক্ষেত্রে আরও ভাল কাজ করে তবে আপনি ইনপুটটির জন্য নিখরচায় ছোট হাতের অক্ষর ব্যবহার করতে পারেন এবং একটি ToLower () কল বাদ দিতে পারেন। আপনার উত্তরে কেবল তা লক্ষ করুন।

আপনি অতিরিক্ত রায় নিম্নলিখিত কল ধরে নিতে পারেন:

5? / _     -> 5  //5 is the best guess we have, use it
5? / 5?    -> 5  //uncertain, but matching
5? / 4?    -> ?  //conflict
 5 / 4     -> ?  //conflict
5? / 4     -> 4  //solid information overrides possible value
 5 / 4?    -> 5  //solid information overrides possible value
 _ / _     -> ?  //no information available

অতিরিক্তভাবে আপনি ধরে নিতে পারেন যে সমস্ত ইনপুটগুলিতে প্রশ্ন চিহ্ন সহ নয় দশ-অঙ্কের ফোন নম্বর থাকবে। দশ সংখ্যার (যেমন 1234567 / 1234567) নয় এমন ইনপুটগুলিকে হয় সমাধানযোগ্য (মিথ্যা আউটপুট) হিসাবে বিবেচনা করা যেতে পারে বা ত্রুটি নিক্ষেপ করা যেতে পারে।

ইনপুট

অক্ষরের একটি লাইন, 0-9A-Z _?/উপরে বর্ণিত হিসাবে।

আউটপুট

যদি এটি একক বৈধ দশ-অঙ্কের ফোন নম্বরকে বিশ্লেষণ করা যায় তবে ফোন নম্বরটি আউটপুট করুন। অন্যথায় কিছু ত্রুটি ইঙ্গিতের ফর্ম আউটপুট (যেমন -1, মিথ্যা, বা একটি ফাঁকা লাইন)।

যথারীতি সবচেয়ে কম জয়।

নমুনা ইনপুট:

1234567890 / 1234567890
1234567890? / 1234567890
123456789_ / 1234567890
1234567890? / 123456789_
1234567890 / 1234567890?
1234567890 / 123456789_
123456789_ / 1234567890?
1234567890? / 1234567890?
1234567890? / 1234567891?
123456789_ / 123456789_
555CALLUS1 / 5552255871
404_12?6039 / 4041?1560_9
_GETREVENGE / 16?36?_2838_
1?691460_50 / 16_14609?50
61?08977211 / 612?897725?1
40?0INSTA__ / 8?00_NSTI?LL
3985_534?10 / 39?8?5053_10
7__7294?737 / 7797299?_37
28?897_384?1 / _8?89763861
271168090_ / 27116800?09
6802?148343 / 67?01148343
94_11628?2?6? / 9491162_47?
17?4285_689 / 1__26?52689
6_311?95_38 / 6731194?7?38
380?7DRAGON / 3807378?5?66
4?647_93236 / 5646?6?9__36
365?268898_ / 366267?7?984
GRATEDBATE / IRATEDBATE
5307_079?93 / ____8_____
535_3_0255 / 52?5_3_024?5
55_____088 / 54?2397207?7?
6_48398_95 / _946?398?6_5?
_0_312_3_1 / 81?53123?1?71
____1_____ / 64?255?508?61
8427820607 / 6?424?8?__6?07
50_3707__6 / 52?8375?74?56
615___8255 / 62?526?983?2?1?
__652618__ / 8365261__0
149___933_ / 1_9677?92?31
___7?281562 / 3438?28154?2
5?7?7?___8?3?7?4 / 57_855837_
605_272481 / 605427__81
86?569__731 / 88560?0?7721
1__91654?15 / 17?9?9165715
800NWABODE / 80069ABI?DE
8___9017_0 / 8_2494?12?9_
_024?5?91?470 / 304?17908?7_
42510704_2 / 4_51070492
9338737_89 / 93_873PLUS
327762_401 / 327_MASH01
33093_2058 / 3309_12058
4061_33578 / 40619_3578
559_383197 / 559938_197
94_9746084 / 9459746_84
1_37655238 / 163POLKA_T
_672FRIZZY / 767237499_
8_76318872 / TIP63188_2
51_8404321 / 5178404_21
358_030314 / 358603_314
2597_85802 / 25979_5802
77141_1408 / 7714_91408
330858_457 / 330_586457
4686079_39 / 46_6079239
86457508_6 / 8_45750826
523226626_ / _23BANNANA
_ISSY_ISSY / 44__9548?79?
6?00B_YJILT / 800289KILL?
2?52803___0 / 1526?0390?61?
FI?ND___T?HE / EAS?T?EREGGS?
0_231?95_38 / 0723194?7?38
0?647_39236 / 0646?6?3__36
025?267798_ / 06?6265?9?984
0061_33578 / _0619_3578

আমি কেবলমাত্র বীমা করেছি যে প্রতিটি সম্ভাব্য প্রান্ত-কেসটি আচ্ছাদিত হয়েছে (প্রথম 11 টি এন্ট্রি) তবে এটির চেয়েও এড়াতে এটি বেশ এলোমেলো।

হালনাগাদ

শীর্ষস্থানীয় জিরো (জোনাথন অ্যালান এর পরামর্শে) এর সাথে নীচে চারটি এন্ট্রি যুক্ত হয়েছে।

নমুনা ইনপুটগুলির জন্য সঠিক আউটপুট:

https://pastebin.com/gbCnRdLV

জোনাথন অ্যালানের প্রবেশ থেকে আউটপুট ভিত্তিতে (ফর্ম্যাট আউটপুটটি আদর্শ ছিল)।


আমাদের কি ইনপুটগুলি একক স্ট্রিং হিসাবে গ্রহণ করতে হবে, দ্বারা বিচ্ছিন্ন করা হয়েছে " / ", বা আমরা কেবল তাদের দুটি স্ট্যান্ডার্ড ইনপুট হিসাবে নিতে পারি?
L3viathan

@ L3viathan আমি প্রথমে একটি একক স্ট্রিং নেওয়ার বিষয়টি ধারণাটি ধারণ করেছিলাম।
ড্রাকো 18

7
@ ড্রাকো 18 এর একক স্ট্রিং চ্যালেঞ্জের জন্য কিছু
এনেছে

1
@ fəˈnɛtɪk স্যান্ডবক্সে কেউ কিছু বলেনি, তবে ইনপুট জোড়া ব্যবহার করার বিরুদ্ধে আমার কিছুই নেই । আমি এটি প্রাথমিকভাবে কল্পনা করেছিলাম।
ড্রাকো 18

1
কে তাদের ফোন নম্বর জন্য অক্ষর ব্যবহার করে একটি ভয়েসমেইল ছেড়ে দেয় ?!
জোনাথন অ্যালান

উত্তর:


3

জেলি , 84 বাইট

+4 বাইট - আমার মনে হয় এটি সম্ভবত সব ক্ষেত্রে একইরকম আচরণ করা উচিত, তাই আমি কীপ্যাড লিকুইচিং পূর্ণসংখ্যার ব্যবহার করে ডিজিটাল-অক্ষরে ফিরে এসেছি +49Ọ

”?e‘ḣ@µ”_eḤ‘ẋ@
;Ṃµ68DṬ+3RØAṁẇ@€FT+49Ọȯµ€Fṡ2i”?Ḃ$ÐḟÇ€
ḟ⁶ṣ”/Ç€ZLÐṂ€Q€LỊ$ÐfF€Ḣ€ḟ”_µL⁼⁵ȧ

একটি ফাংশন যা নির্দিষ্ট ফর্ম্যাটে স্ট্রিং নেয় এবং ফোন নম্বরটি অক্ষরের তালিকা হিসাবে দেয় বা শূন্য হলে অবৈধ। প্রোগ্রাম হিসাবে এটি মুদ্রিত হয় যেন এটি একটি স্ট্রিং ছিল were

এটি যেভাবে কাজ করে তারা সংখ্যাটি আরও বার বার করতে পারে
(উদাঃ "123456789_ / 123456789_ / 1234567890")
... এমনকি কেবল এটি একবার বলে দিতে পারে এবং সংজ্ঞায়িত যুক্তি প্রয়োগ হবে।

এটি অনলাইন চেষ্টা করুন! , বা সমস্ত নমুনা ইনপুট দেখুন

কিভাবে?

”?e‘ḣ@µ”_eḤ‘ẋ@ - Link 1, helper to vary the length of a 2-slice: list s
”?             - literal '?'
  e            - exists in s                   (1 or 0)
   ‘           - increment                     (2 or 1)
    ḣ@         - head with reversed @rguments  (s or s[:1] - removes 2nd value if not '?')
      µ        - monadic chain separation, call that t
       ”_      - literal '_'
         e     - exists in t                   (1 or 0)
          Ḥ    - double                        (2 or 0)
           ‘   - increment                     (3 or 1)
            ẋ@ - repeat t that many times      (t*3 or t - [`_`]->['_','_','_'])

;Ṃµ68DṬ+3RØAṁẇ@€FT+49Ọȯµ€Fṡ2i”?Ḃ$ÐḟÇ€ - Link 2, reformat a phone number: char list of [0-9][A-Z], p
;                                     - concatenate p with
 Ṃ                                    - minimum of p - (?<_<0<1<...<9<A<...<Z - never "?" however, since it only follows a digit.)
                                      -   - this is simply to make a 2-slice with the last character on the left, as used at the very end of this link.
  µ                                   - monadic chain separation call that q
                       µ€             - monadic chain separation, for €ach v in q do:
   68                                 -   literal 68
     D                                -   cast to a decimal list -  [6,8]
      Ṭ                               -   untruth                -  [0,0,0,0,0,1,0,1]
       +3                             -   add 3                  -  [3,3,3,3,3,4,3,4]
         R                            -   range                  -  [[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3,4],[1,2,3],[1,2,34]]
          ØA                          -   uppercase alphabet     -  ABCDEFGHIJKLMNOPQRSTUVWXYZ
            ṁ                         -   mould like the range ^ -  [ABC,DEF,GHI,JKL,MNO,PQRS,TUV,WXYZ]
             ẇ@€                      -   sublist v exists in that? for €ach, with reversed @rguments
                F                     -   flatten        (e.g. 'E' -> [0,1,0,0,0,0,0,0]; '4' -> [0,0,0,0,0,0,0,0]
                 T                    -   truthy indexes (e.g. 'E' -> [2]; '4' -> [])
                  +49                 - add 49
                     Ọ                - cast to character
                      ȯ               -   or             (e.g. 'E' -> [3]; '4' -> '4')
                         F           - flatten
                          ṡ2          - all slices of length 2
                                 Ðḟ   - filter discard if:
                                $     -   last two links as a monad:
                            i         -     first index of
                             ”?       -     literal '?'   (first index returns 0 if none exists)
                               Ḃ      -   mod 2 (so this filter discards pairs starting with '?')
                                   Ç€ - call the last link (1) as a monad for €ach slice

ḟ⁶ṣ”/Ç€ZLÐṂ€Q€LỊ$ÐfF€Ḣ€ḟ”_µL⁼⁵ȧ - Main link: string (or char list) s
ḟ                               - filter discard any:
 ⁶                              - literal ' '
  ṣ                             - split on:
   ”/                           - literal '/'
     Ç€                         - call the last link (2) as a monad for €ach
       Z                        - transpose
         ÐṂ€                    - filter, for €ach, keep items with minimal:
        L                       -   length
            Q€                  - de-duplicate €ach
                 Ðf             - filter keep items with:
                $               - last two links as a monad:
              L                 -   length
               Ị                -   insignificant? (=1 effectively here)
                   F€           - flatten €ach
                     Ḣ€         - head €ach
                       ḟ        - filter discard any of:
                        ”_      -   literal '_'
                          µ     - monadic chain separation, call that r
                           L    - length(r)
                             ⁵  - literal 10
                            ⁼   - equal?
                              ȧ - and r (0 if r did not result in a 10-digit list, else r)

দেখে মনে হচ্ছে কোনও ত্রুটি হতে পারে, এর 55_____088 / 54?2397207?7?সমাধান করা উচিত 5523972088: সমস্ত অনুপস্থিত সংখ্যা উপস্থিত রয়েছে এবং ডানদিকে অনিশ্চিত অঙ্কগুলি বাম দিকে উপলব্ধ। যদিও সরল সব মামলা চলে run
Draco18s

আহা, আমি যা অপ্রয়োজনীয় ফিল্টার বলে মনে করেছি তা সরিয়ে দিয়েছি, এটি ছিল না। স্থির করা হচ্ছে ...
জোনাথন অ্যালান

আগে সেখানে ছিল - এবং এটি গল্ফ ছিল না! ;)
Draco18s

অওফ যা আমাকে কিছুক্ষণ সময় নিয়েছে (আমি এটি পরীক্ষা করার সময় আমি একটি পৃথক বাগ পেয়েছি), যদিও এটি ঠিক করা (ফিলিও) ঠিক করার সময় ফিল্টারটি ফিরে যুক্ত হিসাবে একই বাইট গণনাতে ফিরে পেয়েছিলাম।
জোনাথন অ্যালান

@ ড্রাকো 18 - আপনার কি সবকিছু ভাল দেখাচ্ছে? প্রশ্নে পরীক্ষার কেসগুলির জন্য প্রত্যাশিত আউটপুট দেওয়া ভাল হতে পারে বা অবৈধগুলি কেবল আলাদা করে দেওয়া উচিত।
জোনাথন অ্যালান


5

পাইথন 3, 549 530 509 453 449 410 406 394 393 391 বাইট

আমি নিশ্চিত এটির উন্নতি হতে পারে তবে এটি একটি শুরু:

def f(e,z,q="?",u=str.isnumeric):
 if e+z in(e,z):return""
 o,O,t,T,*x=e[0],e[1:2],z[0],z[1:2],e[1:],z[1:]
 if"?"in o+t:return f([e,x[0]][o==q],z)
 if u(o):
  if u(t):return t+f(*x)if O==q!=T else o+f(*x)if o==t or T==q!=O else 1
  return o+f(*x)
 if u(t):return t+f(*x)
def g(s):
 for a,b in zip(map(chr,range(65,91)),"2223334445556667777888999"):s=s.replace(a,b)
 return f(*s.split(" / "))

আমি যে ফর্ম্যাটটি চাই সেগুলিতে ইনপুটগুলি তৈরি করতে আমি str.translateচিঠিগুলি এবং একটি মোড়ক ফাংশন ব্যবহার করছি g। আসল ফাংশনটি fপুনরাবৃত্ত, এবং অস্পষ্ট ইনপুটগুলির জন্য ব্যর্থ হবে। আমার কাছে এখনও সেখানে প্রচুর খ্যাতি রয়েছে, সুতরাং আমি নিশ্চিত যে উন্নতির অনেক জায়গা আছে।

উন্নতি:

  • শর্তগুলি একত্রিত করে 19 বাইট সংরক্ষণ করেছেন
  • টেরিনারি সহ 21 বাইট সংরক্ষণ করেছেন
  • @ টুক্কাএক্সকে ধন্যবাদ, ম্যানুয়াল অভিধানের পরিবর্তে অভিধান বোধগম্যতা ব্যবহার করে 56 বাইট সংরক্ষণ করেছেন
  • @ টুক্কাএক্সের উন্নতিতে @ovs দ্বারা প্রস্তাবিত পদ্ধতিটিতে স্যুইচ করে 4 বাইট সংরক্ষণ করা হয়েছে
  • @ovs (এবং শেষ অপসারণযোগ্য হোয়াইটস্পেস সরানো) এর উন্নতিতে 38 বাইট সংরক্ষণ করেছে
  • str.isnumericএকটি কীওয়ার্ড আর্গুমেন্টে সংজ্ঞায়িত করে 4 বাইট সংরক্ষণ করেছেন
  • মিলিত তুলনা অপারেটরদের সঙ্গে 12 বাইট সংরক্ষিত (যেমন T==q!=O)
  • চালু not(e or z)করে 1 বাইট সংরক্ষণ করেছেন e+z in(e,z)
  • ঘন ঘন ব্যবহৃত সাশ্রয় করে 2 বাইট সংরক্ষণ করেছেন (E,Z)

এটিতে একটি অভিধান বোধগম্যতা রয়েছে যা শীর্ষ সারির ডিফল্টগুলি ধারণ করে না। আমি 3 এর ক্রমগুলি ঘৃণা করি তবে সেগুলি গণিতে প্রতিস্থাপন করা যেতে পারে।
Yytsi


@ovs নিস বর্ণমালা map(chr,range(65,91))যদিও পরিবর্তিত হতে পারে ।
Yytsi

2
পুনরায়: খ্যাতি হ্রাস করার জন্য এটিকে একটি সম্প্রদায় উইকি বানানো, conক্যমত্য হবে না , কেবল দয়াবান সহায়তা গ্রহণ করুন, এবং আপনার মত এটি ক্রেডিট করুন।
জোনাথন অ্যালান

1
আমি প্রতিবার শপথ করছি যখনই আমি এখানে ফিরে আসি এই উত্তরটি আরও খাটো হয়ে যায়: ডি
ড্রাকো 18

3

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

সম্পাদনা করুন: মিথ্যা আউটপুট নিয়ম মেনে চলতে +10 +9 বাইট


বাক্য গঠন সিনট্যাক্সে দুটি ইনপুট স্ট্রিং নেয় (a)(b)। হয় falseবা অনুমানযুক্ত ফোন নম্বরটি উপস্থাপন করে এমন একটি স্ট্রিং দেয়।

a=>b=>!(s=(F=a=>a.match(/(.\??)|_/g).map(([x,y])=>(x<=9?++x:parseInt(x,36)*.32-(x>'Y'))|(x!='_'&!y)*16))(a).map((x,i)=>(x=(d=x^(y=F(b)[i]),x>y)?x:y)&&(d&16|!(d%x))?--x&15:a).join``)[10]&&s

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

পদক্ষেপ # 1 - ইনপুট স্ট্রিংগুলি পার্সিং করা

আমরা প্রথমে F()ফাংশনটি সংজ্ঞায়িত করি যা নীচের নিয়মগুলি প্রয়োগ করে একটি স্ট্রিংটিকে পূর্ণসংখ্যার অ্যারেতে অনুবাদ করে:

  • আন্ডারস্কোর 0 তে রূপান্তরিত হয়
  • একটি ডিজিট এন বা সমমানের অক্ষর (N + 1) বা 16 এ রূপান্তরিত হয় (যেমন "2" → 19, "আর" → 24)
  • একটি অঙ্ক এন বা সমতুল্য অক্ষরের পরে একটি জিজ্ঞাসাবাদ চিহ্নটি N + 1 তে রূপান্তরিত হয় (যেমন "2?" → 3, "আর?" → 8)

যা নিম্নলিখিত উপায়ে অন্যভাবে ব্যাখ্যা করা যেতে পারে:

  • 0 অজানা
  • [ 1 .. 10 ] re অবিশ্বস্ত
  • [ 17 .. 26 ]নির্ভরযোগ্য

আমরা আবেদন F()উভয় aএবং b। এটি আমাদের দুটি সংখ্যার সম্ভাব্য ব্যাখ্যার সাথে মিল রেখে ফোন নম্বরটিতে প্রতিটি সংখ্যার জন্য একটি সংখ্যক পূর্ণসংখ্যার (x, y) দেয় ।

পদক্ষেপ # 2 - অঙ্কগুলি অনুমান করা

প্রতিটি জোড়ার জন্য (x, y) , আমরা গণনা:

  • d = x XOR y
  • x = MAX (x, y) নির্ভরযোগ্য মান সর্বদা অবিশ্বাস্যরূপে পছন্দ হয়

যদি x == 0 হয় তবে এর অর্থ উভয় ইনপুট আন্ডারস্কোর অক্ষর। সুতরাং, এই ক্ষেত্রে অঙ্কটি অজানা।

যদি এক্স! = 0 হয় , তবে নিম্নলিখিত শর্তগুলির মধ্যে একটি যদি সত্য হয় তবে আমরা নিরাপদে অঙ্কটি কমাতে পারি:

condition       | interpretation
----------------+------------------------------------------------------
(d AND 16) != 0 | one input is unreliable and the other one is reliable
d == 0          | both inputs are identical
d == x          | one input is an underscore

শেষ দুটি শর্তটি একত্রিত হতে পারে !(d % x)। অতএব চূড়ান্ত সূত্র:

x && (d & 16 || !(d % x))

যদি সত্য হয়, আমরা x কে অনুমান করা সংখ্যায় গণনা (x - 1) এবং 15 এর মাধ্যমে রূপান্তর করি ।

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

(কনসোল স্নিপেট আরও আউটপুট ইতিহাস সমর্থন করতে পারে না শুধুমাত্র শুধুমাত্র 50 প্রথম এক।)


1234567890? / 1234567890?সমাধান করা উচিত 1234567890। এই মুহূর্তে আপনার কোড আউটপুট 123456789?যা ইনপুটটির চেয়েও কম তথ্যবহুল। Assume: 5? / 5? -> 5 //uncertain, but matching
Draco18s

@ ড্রাকো 18 আমি যা বলেছি তার বিপরীতে আমি ৫১ টি পরীক্ষার কেস অন্তর্ভুক্ত করেছি । সুতরাং প্রথমটি বাদ দেওয়া হয়েছিল এবং সমস্ত কিছু এক সারি থেকে সরানো হয়েছিল। (এখন সংশোধন করা হয়েছে দুঃখিত যে সম্পর্কে।।)
Arnauld

Aaah। তবুও, এই পরীক্ষাগুলির ক্ষেত্রে এটি কোনও ধরণের মিথ্যা বা ত্রুটির মান আউটপুট করা উচিত। তবে অন্যথায় ভাল দেখাচ্ছে।
ড্রাকো 18s

2

পার্ল 5 , 211 বাইট

... ইনডেন্টেশন এবং \ n নতুন লাইন ছাড়া

@i=map{y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/22233344455566677778889999/;$_}split' / ',shift;
print map{
  $_=join'',map{s,(\d\??|_),,;$1}@i;
  /((\d)\??\2\??|(\d)\??_|_(\d)\??|(\d)\d\?|\d\?(\d))$/;$2//$3//$4//$5//$6//'?'
}1..10

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


দেখে মনে হচ্ছে এটির জন্য এটি "সেরা এটি পারে সেরা" ( 83652618?0) কোনও ধরণের মিথ্যা বা ত্রুটির মানের চেয়ে।
Draco18s

কোনটি ধাঁধাটি চেয়েছিল যদি আমি ভুল না করি। "আপনি নিম্নোক্ত রায় কলগুলি অতিরিক্তভাবে ধরে নিতে পারেন" শিরোনামের অধীনে মামলাগুলি দেখুন। অথবা না?
কেজেটিল এস

দুঃখিত, আপনার জবাবের কোনও বিজ্ঞপ্তি কখনও পাওয়া যায় নি (উল্লেখ নেই)। রায়টি কল করার জন্য আমি যে বিভাগটি করেছি ?, তাতে একটি নির্দেশ রয়েছে যা অনুপস্থিত তথ্য সমাধানের কোনও উপায় নেই যা এর পরে আউটপুট বিভাগে পড়ে উচিত:...Otherwise output some form of error indication (e.g. -1, false, or an empty line).
ড্রাকো 18

2

রেটিনা, 150 140 136 বাইট

ক্রিটসি লিথোসকে ধন্যবাদ কয়েক বাইট সংরক্ষণ করা হয়েছে

T`?L`#22233344455566677778889
./.

(?<=(\d)(\w#?){9}).#|.#(?=(\w#?){9}(\d)(?!#))
$1$4
#

_(?=.{9}(.))|(?<=(.).{9})_
$1$2
^(\d*)\1$|.*
$1

অনলাইনে চেষ্টা করে দেখুন!

ব্যাখ্যা:

প্রথম লাইন ?ইনপুটগুলিতে #এবং সমস্ত অক্ষরকে তাদের সংখ্যাসম্মত সমান্তরালে রূপান্তরিত করে। তারপরে আমরা ফাঁকা স্থানগুলি এবং /ইনপুট থেকে সরিয়ে ফেলি। পরবর্তী দুটি লাইন "অনুমান বনাম নিশ্চিততা" কেসগুলির যত্ন নেবে (উদাহরণস্বরূপ 5? \ 4প্রতিস্থাপন করা হবে 4 \ 4)। সমস্তগুলি অপসারণের পরে #, 8 এবং 9 লাইনগুলি "সংখ্যা বনাম _" ক্ষেত্রে মোকাবেলা করে ( _ \ 3হয়ে যায়)3 \ 3 )। তারপরে, যদি স্ট্রিংয়ের দুটি অংশই মিলে যায় তবে আমরা প্রথম 10 টি সংখ্যা রাখি। অন্যথায়, ফোন নম্বরটি অবৈধ তাই আমরা সমস্ত কিছু সরিয়ে ফেলি।

বিকল্প 160-বাইট সমাধান যা স্বেচ্ছাসেবী দৈর্ঘ্যের (এবং সমান আকার) এর ফোন নম্বরগুলির জন্য কাজ করে: টিআইও


আপনি পরিবর্তন করতে পারেন (/|_)থেকে [/_]1 বাইট সংরক্ষণ করুন। এছাড়াও আমি মনে করি আপনি ;পরিবর্তে এটি ব্যবহার করতে পারেন xযা [^x]হয়ে উঠতে পারে\w
ক্রিটিক্সী লিথোস

1

পিএইচপি, 251 236 বাইট

for(;a&$c=preg_replace(["#[^_?](?!\?)#","#_#"],["$0k","?<"],join("-",$argv))[++$i];)${$k+="-"==$c}.=$c<_&$c>=A?0|(ord($c)-($c>W)-($c>P)-59)/3:$c;for(;$c=${1}[$k+1];)echo($n=${1}[$k])==($m=${2}[$k++])|($b=${2}[$k++])!=$c?$c>$b?$n:$m:"?";

কমান্ড লাইন থেকে ইনপুট নেয়; এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

ভাঙ্গন

# A: transform input
                                    # 2. replace single chars with two-character chunk and make sortable:
                                    #   replace "_" with "?<", append "k" to everything else not followed by "?"
for(;a&$c=preg_replace(["#[^_?](?!\?)#","#_#"],["$0k","?<"],join("-",$argv))[++$i];)    # (unknown "<" < unsure "?" < certain "k")
${$k+="-"==$c}.=                # if "-", next argument
        $c<_&$c>=A              # if letter
            ?0|(ord($c)-($c>W)-($c>P)-59)/3 # then translate to digit
            :$c                             # else don´t
    ;
# B: evaluate
for(;$c=${1}[$k+1];)            # loop through arguments: $c=command 2
    echo
        ($n=${1}[$k])                   # $n=digit 2
        ==                          # if digits are equal
        ($m=${2}[$k++])                 # $m=digit 3
        |
        ($b=${2}[$k++])             # $b=command 3
        !=$c                        # or "commands" are not
            ?$c>$b?$n:$m            # then get the one with the more definitive "command"
            :"?"                    # else conflict/unknown
    ;

golfings

  • preg_replace প্রথম: -8 বাইট
  • join: -২
  • $$kপরিবর্তে $t[$k]: -5

1

পিএইচপি, 200 + 8 বাইট

Arnaulds সমাধান দ্বারা অনুপ্রাণিত ।

for($s=join($argv);$c=ord($s[$i++]);$i+=$x)$t[]=$c>90?63:15&($c<65?$c:($c-($c>80)-($c>87)-59)/3)|16*$x="?"==$s[$i];for(;$p++<10;)echo chr(($e=$t[$p]^$d=$t[$p+10])&48|!(15&$e)?min($t[$p],$d)&15|48:63);

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; এটি দিয়ে চালান -nrবা অনলাইনে চেষ্টা করুন

ত্রুটি আউটপুট সীমাবদ্ধতা মেনে চলার জন্য পরিবর্তনগুলি: ( Xএকটি অসম্পূর্ণ সংখ্যার জন্য মুদ্রণ ):

  • অপসারণ |48(-3 বাইট)
  • (+11 বাইট) echo chr(...);দিয়ে প্রতিস্থাপন করুন$r.=...;echo$r>1e10?X:$r;

ভাঙ্গন

for($s=join($argv);$c=ord($s[$i++]);    # loop through characters of arguments
    $i+=$x)                             # skip "?"
$t[]=
    $c>90                               # if "_"
        ?63                             # then 32+16+15
        :                               # else
            15&(                            # lower 4 bits of
            $c<65                               # if digit
            ?$c                                 # then digit
            :($c-($c>80)-($c>87)-59)/3          # else letter mapped to digit
        )
        |16*$x="?"==$s[$i]                  # if next char is "?", add 16
;
for(;$p++<10;)echo chr( # loop through translated arguments
    (
        $e=$t[$p]^      # 2. $e=difference
        $d=$t[$p+10]    # 1. $d=char from 2nd argument
    )&48                # if certainties differ
    |!(15&$e)           #    or digits do not
    ?min($t[$p],$d)&15|48   # then pick the more definite digit (15|48 -> "?")
    :63             # else "?"
);

golfings

  • প্রায় কাজ preg_replace_callback(-10 বাইট)
  • 10 অঙ্কের ইনপুট (-9) উপর নির্ভর করুন
  • এবং অতিরিক্ত গল্ফিং (-8)
  • অপসারণ করা joinসীমানা (-7)
  • $xশেষে অ্যাসাইনমেন্ট সরানো হয়েছে (-2)

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