commit 47fb9155d013abdecf0b08ab6df7c9e59bd1cb60 Author: 202410715046 ARSYA PUTRA CHAIRULLOH <202410715046@mhs.ubharajaya.ac.id> Date: Sat May 10 16:16:54 2025 +0700 4.67_Kode_Morse_Tanpa_Spasi diff --git a/tugas_individu_kode_morse_tanpa_spasi_final.py b/tugas_individu_kode_morse_tanpa_spasi_final.py new file mode 100644 index 0000000..4e42b83 --- /dev/null +++ b/tugas_individu_kode_morse_tanpa_spasi_final.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +"""TUGAS Individu Kode Morse Tanpa Spasi.FINAL + +Automatically generated by Colab. + +Original file is located at + https://colab.research.google.com/drive/1vfw0sfJfrg_jWdWWbvvaSPgnxQCvSK1T +""" + +# Daftar kode Morse standar +MORSE_CODES = { + "A": ".-", "B": "-...", "C": "-.-.", "D": "-..", "E": ".", "F": "..-.", + "G": "--.", "H": "....", "I": "..", "J": ".---", "K": "-.-", "L": ".-..", + "M": "--", "N": "-.", "O": "---", "P": ".--.", "Q": "--.-", "R": ".-.", + "S": "...", "T": "-", "U": "..-", "V": "...-", "W": ".--", "X": "-..-", + "Y": "-.--", "Z": "--..", "1": ".----", "2": "..---", "3": "...--", + "4": "....-", "5": ".....", "6": "-....", "7": "--...", "8": "---..", + "9": "----.", "0": "-----", ".": ".-.-.-", ",": "--..--", "?": "..--..", + "'": ".----.", "!": "-.-.--", "/": "-..-.", "(": "-.--.", ")": "-.--.-", + "&": ".-...", ":": "---...", ";": "-.-.-.", "=": "-...-", "+": ".-.-.", + "-": "-....-", "_": "..--.-", "\"": ".-..-.", "$": "...-..-", "@": ".--.-." +} + +def is_valid_morse_code(morse_code: str) -> bool: + # Validasi bahwa kode hanya berisi karakter . dan - + return all(char in ".-" for char in morse_code) + +def count_valid_insertions(morse_code: str) -> int: + # Jika kode hanya terdiri dari 1 karakter, hasilnya adalah 0 + if len(morse_code) <= 1: + return 0 + + # Fungsi rekursif untuk menghitung kemungkinan penyisipan spasi + def helper(index): + # Jika kita telah mencapai akhir kode, kembalikan 1 sebagai 1 kemungkinan valid + if index == len(morse_code): + return 1 + + # Hitung jumlah kemungkinan dari posisi ini + total = 0 + + # Pertimbangkan semua kemungkinan potongan yang valid + for i in range(index + 1, len(morse_code) + 1): + # Rekursi ke kemungkinan berikutnya + total += helper(i) + + return total + + # Hitung semua kemungkinan mulai dari indeks pertama + return helper(0) - 1 # Kurangi 1 karena kita tidak menghitung kemungkinan tanpa spasi sama sekali + +# Input kode Morse tanpa spasi +morse_code = input("Masukkan kode Morse tanpa spasi (maksimal 20 karakter): ") + +# Validasi panjang karakter +if len(morse_code) > 20: + print("Kode Morse terlalu panjang. Maksimal 20 karakter.") +elif not is_valid_morse_code(morse_code): + print("Kode Morse tidak valid. Pastikan hanya menggunakan karakter . dan -.") +else: + # Hitung jumlah total kemungkinan penyisipan spasi yang valid + result = count_valid_insertions(morse_code) + print(f"Jumlah total kemungkinan penyisipan spasi yang valid: {result}") \ No newline at end of file