Převod telefonního čísla na slovo
Jste také jedním ze šťastlivců s nezapamatovatelným telefonním číslem? Pak se vám možná bude hodit jednoduchý skript, s jehož pomocí si ověříte, zda byste nemohli na své vizitky místo složitého „602 397 378“ tisknout třeba elegantní „602 EXPERT“.
Psaní telefonního čísla pomocí písmen využívá toho, že na klávesnicích moderních telefonů jsou jednotlivým číslicím přiřazena písmena. Protože na většinu číslic připadá více než jedno písmeno, lze tímto způsobem z většiny šestimístných číslic (tři čísla předčíslí pro tentokrát neuvažujeme) vytvořit několik set písmenných kombinací. S trochou štěstí tak lze mnohé „obyčejné“ telefonní číslo nahradit profesionálně znějícím aliasem. I když je tento způsob psaní čísel hojně rozšířen spíše na západ od našich hranic, první vlaštovky se už drahnou dobu objevují také u nás.
Ve formuláři příkladu zadejte své telefonní číslo a stiskněte tlačítko „Vypsat možnosti“. Všechny dostupné písmenné varianty vašeho telefonního čísla se zobrazí v dalším textovém poli.
Kód použitý v příkladu
Základem výše uvedeného miniprográmku je jednoduchý formulář, který obsahuje jedno vstupní pole, jedno tlačítko a výstupní „textarea“ pole. HTML kód formuláře (z nějž byly pro jednoduchost vypuštěny formátovací tagy tabulky) může vypadat třeba takto:
<form name=“Form1″>
<input maxLength=“6″ size=“6″ name=“input“>
<input onclick=“compute(this.form)“ type=“button“ value=“Vypsat možnosti“>
<textarea name=“TextArea1″ rows=“15″ cols=“25″></textarea>
</form>
Po stisku formulářového tlačítka je volána funkce compute, která nejprve zkontroluje platnost vstupu a poté vygeneruje všechny možné písmenné varianty telefonního čísla. Její kód si ovšem ukážeme až nakonec, nejprve je třeba nadefinovat některé pomocné proměnné a funkce.
Pomocné proměnné jsou čtyři. Proměnná fLeft slouží při vypisování již hotových variant do textového pole a indikuje, zda výpis probíhá v levém nebo pravém sloupci. Do řetězcové proměnné nn je generován vlastní seznam všech jmen, proměnná cnt obsahuje celkový počet těchto jmen. Nejzajímavější je proměnná dd, která je vlastně jednorozměrným polem řetězců, přičemž řetězec na pozici X obsahuje všechna písmena, jež jsou variantami pro číslici X:
var dd = [ „0“, „1“, „ABC“, „DEF“, „GHI“, „JKL“, „MNO“, „PQRS“, „TUV“, „WXYZ“ ];
var nn;
var cnt;
var fLeft=true;
Hlavní práci při výpisu dostupných variant odvede funkce Translate. Aby nebylo třeba procházet polem dd v několika zanořených smyčkách a pracně hlídat několik indexů, je funkce napsaná jako rekurzivní. Jak už to u rekurzivních funkcí bývá, popis chování funkce je několikanásobně složitější než funkce samotná. Ze zdrojového kódu by nicméně její chování mělo být dostatečně zřejmé:
function Translate( inStr, toStr ) {
if( inStr.length > 0 ) {
var a = 1 * inStr.substring(0,1);
var i;
for( i=0; i<dd[a].length; i++ ) {
Translate(inStr.substring(1), toStr + dd[a].substring(i,i+1));
}
} else {
nn += toStr + (fLeft ? “ “ : „\n“);
fLeft = !fLeft;
cnt += 1;
}
}
Zbývá už jen maličkost, totiž kód již dříve zmíněné funkce compute. Jejím úkolem je kontrola vstupu, inicializace pomocných proměnných, volání funkce Translate a nakonec přepis výsledku do příslušného formulářového pole:
function compute(form) {
var txt = form.input.value;
if (txt.length!=6 || isNaN(txt)) {
alert („Zadané číslo musí obsahovat 6 číslic.“);
form.input.select();
form.input.focus();
form.TextArea1.value = „Špatný vstup…“
return;
}
nn=““; cnt = 0;
Translate( txt, „“ );
form.TextArea1.value = „Číslo: “ + txt + „\n\n“ + nn + „\nCelkem: “ + cnt + “ možností“;
}
Pro zájemce je celý zdrojový kód příkladu k dispozici. Přeji hodně štěstí při hledání aliasu.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
AI na dosah ruky: Jak je to s AI v osobních zařízeních?
22. ledna 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023 -
Zvýšení výkonu WiFi signálu: Jak a proč používat WiFi zesilovače
28. června 2023
Nejnovější
-
Jak využít AI potenciál svého Macu?
9. ledna 2025 -
NIS2: Verifikace údajů vlastníků domén
6. ledna 2025 -
Dostali jste k vánocům PC? Využijte jeho AI potenciál!
3. ledna 2025 -
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024