Nasıl sesli mesaj alıyorsunuz ve kişinin bağlantısı harika değildi ve onları nasıl arayacağınızı anlamaya çalışıyorsunuz, ancak bunun "5" veya "8" olup olmadığından emin değilsiniz. dedim?
İşte bu meydan okuma.
İyi haber, arayan kişinin numaralarını iki kez okuması, ancak her iki yerde de bozuk olması.
Programınız aşağıdaki gibi girdi almalıdır:
5551231234 / 5551231234
İlk on hane sesli mesajda ilk kez telefon numarası söylendiğinde ve ikinci küme ikinci kez söylenir. Sadece ... daha çok benzeyecek:
555?ABC1_36? / 55?522_1?234
- Bir rakam ve ardından soru işareti, bu rakam için en iyi tahminin bu olduğu anlamına gelir (örn. "5?", "Muhtemelen 5, tekrarla karşılaştır" anlamına gelir).
- Alt çizgi bilinen bir eksik basamağı gösterir, statik tarafından hiç deşifre edilemeyecek kadar bulanık bir şey.
- Harfler sadece şudur: harfler. Onlara ilgili basamakları gibi davranın
- ABC -> 2, DEF -> 3, GHI -> 4, JKL -> 5, MNO -> 6, PQRS -> 7, TÜV -> 8, WXYZ -> 9
- Tüm örnek girişler büyük harf kullanır (ToUpper () çağrısını güvenle çıkarabilirsiniz)
- Diliniz küçük harflerle daha iyi çalışıyorsa, giriş için küçük harfleri özgürce kullanabilir ve ToLower () çağrısını atlayabilirsiniz. Sadece cevabınıza dikkat edin.
Ayrıca, aşağıdaki karar çağrılarını kabul edebilirsiniz:
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
Ayrıca, tüm girişlerin soru işaretleri dahil değil, on haneli telefon numaraları içerdiğini varsayabilirsiniz. On basamak olmayan girişler (örn. 1234567 / 1234567
) Çözülemez (falsey çıkışı) olarak değerlendirilebilir veya bir hata verebilir.
Giriş
0-9A-Z _?/
Yukarıda açıklandığı gibi bir karakter satırı .
Çıktı
Geçerli bir on basamaklı telefon numarasına ayrıştırılabilirse, telefon numarasını girin. Aksi takdirde bir tür hata göstergesi (örn. -1, yanlış veya boş bir çizgi) çıktılayın.
Her zamanki gibi en kısa galibiyet.
Örnek girişler:
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
Sadece mümkün olan her son durumun (ilk 11 giriş) ele alındığından emin oldum, ancak bunun dışında oldukça rastgele.
Güncelleme
En alttaki dört giriş, baştaki sıfırlarla (Jonathan Allan'ın önerisiyle) eklendi.
Örnek girişler için doğru çıkış:
Jonathan Allan'ın girişinden elde edilen çıktıya dayanarak (biçimlendirilmiş çıktı idealdir).
" / "
birbirinden ayırarak tek bir dize olarak almalı mıyız yoksa bunları iki standart girdi olarak alabilir miyiz?