Lütfen dönüştürülecek yazıyı giriniz.
Latin -> MorseMorse kodu, metni nokta (.) ve tire (-) kombinasyonlarıyla temsil eden bir kodlama sistemidir. Her harf ve rakamın kendine özgü bir Morse kodu vardır.
Karakterleri Morse koduna çevirmek için bir sözlük (object) kullanılır:
const dict = {
'A': '.-', 'B': '-...', 'C': '-.-.',
'D': '-..', 'E': '.', 'F': '..-.',
'G': '--.', 'H': '....', 'I': '..',
// ... diğer karakterler
' ': '/' // Boşluk karakteri
};
// Kullanım:
dict['A'] // '.-'
dict['E'] // '.' (en kısa kod)
dict[' '] // '/' (boşluk)
Algoritma: Her karakteri tek tek oku, sözlükte ara, Morse koduna çevir
function latinToMorse(text) {
let morseText = '';
// Her karakteri büyük harfe çevir (büyük/küçük harf duyarsız)
text = text.toUpperCase();
// Her karakteri işle
for (let i = 0; i < text.length; i++) {
const char = text[i];
const morseCode = dict[char];
// Eğer sözlükte yoksa, 'X' kullan
if (morseCode === undefined) {
morseCode = 'X';
}
morseText += morseCode;
morseText += ' '; // Karakterler arası boşluk
}
return morseText.trim();
}
Örnek:
// "HELLO" → Morse
// H → '....'
// E → '.'
// L → '.-..'
// L → '.-..'
// O → '---'
// Sonuç: ".... . .-.. .-.. ---"
Algoritma: Morse kodlarını boşluklara göre ayır, ters sözlük araması yap
function morseToLatin(morseText) {
let latinText = '';
// Morse kodlarını boşluklara göre ayır
const morseCodes = morseText.split(' ');
// Her Morse kodunu işle
for (let i = 0; i < morseCodes.length; i++) {
const morseCode = morseCodes[i];
// Özel durum: '/' boşluk karakterini temsil eder
if (morseCode === '/') {
latinText += ' ';
continue;
}
// Ters arama: Morse kodundan karakteri bul
const char = getKeyByValue(dict, morseCode);
// Bulunamazsa 'X' kullan
if (char === undefined) {
latinText += 'X';
} else {
latinText += char;
}
}
return latinText;
}
Morse kodundan karakteri bulmak için sözlükte ters arama yapılır:
function getKeyByValue(object, value) {
// Object.keys() ile tüm anahtarları al
// find() ile değeri eşleşen anahtarı bul
return Object.keys(object).find(key => object[key] === value);
}
// Örnek:
getKeyByValue(dict, '.-') // 'A'
getKeyByValue(dict, '...') // 'S'
getKeyByValue(dict, '/') // ' '
toUpperCase(): Tüm karakterleri büyük harfe çevir
"hello".toUpperCase() // "HELLO"
"WORLD".toUpperCase() // "WORLD"
split(): String'i belirli bir karaktere göre böl
".... . .-..".split(' ')
// ['....', '.', '.-..']
"/".split(' ')
// ['/']
Kullanıcı yön değiştirdiğinde, giriş ve çıkış alanları yer değiştirir:
function alphabetChanged() {
// Radio button durumunu kontrol et
isLatinChecked = latin.checked;
// Giriş ve çıkışı yer değiştir
const temp = inputText.value;
inputText.value = outputText.value;
outputText.value = temp;
}
// Ters sözlük oluşturma (daha hızlı arama için)
const reverseDict = {};
Object.keys(dict).forEach(key => {
reverseDict[dict[key]] = key;
});
// Artık O(1) arama:
reverseDict['.-'] // 'A' (çok hızlı!)
reverseDict['...'] // 'S'