All SolutionsAll Solutions

☎️

Some Mars

Week 15, 2026

Python two-step solution | Alexevi | Python Solutions

def main() -> None: msg = "☀️ ❄️☀️☀️❄️ ☀️❄️ ❄️❄️ ☀️❄️❄️☀️ ☀️❄️☀️☀️ ☀️" smsg = [] s = 0 el = "" for c in msg: if s == 3: smsg.append(el) el = c s = 0 elif c != ' ': el += c s = 0 else: s += 1 smsg.append(el) result = "" code_morse = {".-": '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'} for el in smsg: if el != ' ': result += code_morse[el.replace('❄️', '-').replace('☀️', '.')] else: result += ' ' print(result) main()

Python - Morse Converter | BMC | Python Solutions

data_base = { # data sourced from wikipedia + moratech.com/aviation/morsecode.html # NOTE: International Morse Code # letters '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': '--..', # integers '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', # punctuation '.': '.-.-.-', ',': '--..--', '?': '..--..', "'": '.----.', '!': '-.-.--', '/': '-..-.', '(': '-.--.', ')': '-.--.-', ':': '---...', ';': '-.-.-.', '=': '-...-', '-': '-....-', '_': '..--.-', '"': '.-..-.', '@': '.--.-.' } def convertToMorse(aString: str) -> str: newMsg = "" for char in aString: if char == " ": newMsg += " " if char == "☀": newMsg += "." if char == "❄": newMsg += "-" return newMsg def converToText(aMorseString: str) -> str: global data_base data_base_reverse = {v: k for k, v in data_base.items()} morse_list = [m for m in aMorseString.split()] words = [] temp = "" for morse in morse_list: if morse != "/": temp += data_base_reverse[morse] else: words.append(temp) temp = "" words.append(temp) return " ".join(words) # main msg = "❄️ ☀️☀️☀️☀️ ☀️ ☀️❄️❄️ ❄️❄️❄️ ☀️❄️☀️ ☀️❄️☀️☀️ ❄️☀️☀️ ❄️☀️❄️☀️ ☀️☀️☀️☀️ ☀️❄️ ❄️☀️ ❄️❄️☀️ ☀️ ❄️☀️☀️ ☀️❄️❄️ ☀️☀️☀️☀️ ☀️ ❄️☀️ ☀️☀️☀️ ☀️❄️ ❄️❄️ ☀️☀️❄️ ☀️ ☀️❄️☀️☀️ ❄️❄️ ❄️❄️❄️ ☀️❄️☀️ ☀️☀️☀️ ☀️ ☀️☀️☀️ ☀️ ❄️☀️ ❄️ ❄️ ☀️☀️☀️☀️ ☀️ ☀️☀️❄️☀️ ☀️☀️ ☀️❄️☀️ ☀️☀️☀️ ❄️ ☀️❄️☀️☀️ ❄️❄️❄️ ❄️☀️ ❄️❄️☀️ ❄️☀️☀️ ☀️☀️ ☀️☀️☀️ ❄️ ☀️❄️ ❄️☀️ ❄️☀️❄️☀️ ☀️ ❄️❄️ ☀️ ☀️☀️☀️ ☀️☀️☀️ ☀️❄️ ❄️❄️☀️ ☀️ ☀️❄️❄️ ☀️☀️☀️☀️ ☀️❄️ ❄️ ☀️☀️☀️☀️ ☀️❄️ ❄️ ☀️☀️☀️☀️ ❄️❄️☀️ ❄️❄️❄️ ❄️☀️☀️ ☀️❄️❄️ ☀️❄️☀️ ❄️❄️❄️ ☀️☀️❄️ ❄️❄️☀️ ☀️☀️☀️☀️ ❄️ ☀️☀️☀️☀️❄️ ☀️☀️☀️☀️❄️ ❄️❄️ ☀️☀️ ☀️❄️☀️☀️ ☀️ ☀️☀️☀️ ❄️☀️☀️☀️ ☀️ ❄️ ☀️❄️❄️ ☀️ ☀️ ❄️☀️ ☀️❄️❄️ ☀️❄️ ☀️☀️☀️ ☀️☀️☀️☀️ ☀️☀️ ❄️☀️ ❄️❄️☀️ ❄️ ❄️❄️❄️ ❄️☀️ ☀️❄️ ❄️☀️ ❄️☀️☀️ ❄️☀️☀️☀️ ☀️❄️ ☀️❄️☀️☀️ ❄️ ☀️☀️ ❄️❄️ ❄️❄️❄️ ☀️❄️☀️ ☀️ ☀️❄️ ☀️❄️☀️☀️ ❄️❄️❄️ ❄️☀️ ❄️❄️☀️ ☀️❄️ ❄️ ☀️ ☀️❄️☀️☀️ ☀️ ❄️❄️☀️ ☀️❄️☀️ ☀️❄️ ☀️❄️❄️☀️ ☀️☀️☀️☀️ ☀️❄️☀️☀️ ☀️☀️ ❄️☀️ ☀️ ❄️❄️❄️ ❄️☀️ ☀️☀️❄️❄️❄️ ☀️☀️☀️☀️❄️ ❄️❄️ ☀️❄️ ❄️☀️❄️❄️ ☀️❄️❄️❄️❄️ ❄️❄️❄️☀️☀️ ☀️☀️☀️☀️❄️ ☀️☀️☀️☀️❄️ ❄️ ❄️❄️❄️ ☀️❄️ ☀️❄️☀️☀️ ☀️☀️❄️☀️ ☀️❄️☀️ ☀️ ❄️☀️☀️ ☀️☀️☀️❄️ ☀️❄️ ☀️☀️ ☀️❄️☀️☀️" print(converToText(convertToMorse(msg)))

Convert sun/snow to morse to text | Draw6 | C++ Solutions

#include <iostream> #include <map> //using namespace std; void morseToText(std::string morseCode); int main() { std::string morseCode = "- .... . / .-- --- .-. .-.. -.. / -.-. .... .- -. --. . -.. / .-- .... . -. / ... .- -- ..- . .-.. / -- --- .-. ... . / ... . -. - / - .... . / ..-. .. .-. ... - / .-.. --- -. --. / -.. .. ... - .- -. -.-. . / -- . ... ... .- --. . / .-- .... .- - / .... .- - .... / --. --- -.. / .-- .-. --- ..- --. .... - / ....- ....- / -- .. .-.. . ... / -... . - .-- . . -. / .-- .- ... .... .. -. --. - --- -. / .- -. -.. / -... .- .-.. - .. -- --- .-. . / .- .-.. --- -. --. / .- / - . .-.. . --. .-. .- .--. .... / .-.. .. -. . / --- -. / ..--- ....- / -- .- -.-- / .---- ---.. ....- ....- / - --- / .- .-.. ..-. .-. . -.. / ...- .- .. .-.."; morseToText(morseCode); return 0; } void morseToText(std::string morseCode) { std::map<std::string, char> morseCodeDict = { { ".-", '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' }, { "-----", '0' }, { ".----", '1' }, { "..---", '2' }, { "...--", '3' }, { "....-", '4' }, { ".....", '5' }, { "-....", '6' }, { "--...", '7' }, { "---..", '8' }, { "----.", '9' }, { "/", ' ' } }; size_t pos = 0; while ((pos = morseCode.find(' ')) != std::string::npos) { std::string token = morseCode.substr(0, pos); if (morseCodeDict.find(token) != morseCodeDict.end()) { std::cout << morseCodeDict[token]; } else { std::cout << " "; } morseCode.erase(0, pos + 1); } std::cout << morseCodeDict[morseCode] << std::endl; }

python | Peiran D | Python Solutions

import re MORSE = { '.-': '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' } text = ( "❄️ ☀️☀️☀️☀️ ☀️ ☀️❄️❄️ ❄️❄️❄️ ☀️❄️☀️ ☀️❄️☀️☀️ ❄️☀️☀️ " "❄️☀️❄️☀️ ☀️☀️☀️☀️ ☀️❄️ ❄️☀️ ❄️❄️☀️ ☀️ ❄️☀️☀️ ☀️❄️❄️ ☀️☀️☀️☀️ ☀️ ❄️☀️ " "☀️☀️☀️ ☀️❄️ ❄️❄️ ☀️☀️❄️ ☀️ ☀️❄️☀️☀️ ❄️❄️ ❄️❄️❄️ ☀️❄️☀️ ☀️☀️☀️ ☀️ " "☀️☀️☀️ ☀️ ❄️☀️ ❄️ ❄️ ☀️☀️☀️☀️ ☀️ ☀️☀️❄️☀️ ☀️☀️ ☀️❄️☀️ ☀️☀️☀️ ❄️ " "☀️❄️☀️☀️ ❄️❄️❄️ ❄️☀️ ❄️❄️☀️ ❄️☀️☀️ ☀️☀️ ☀️☀️☀️ ❄️ ☀️❄️ ❄️☀️ ❄️☀️❄️☀️ ☀️ " "❄️❄️ ☀️ ☀️☀️☀️ ☀️☀️☀️ ☀️❄️ ❄️❄️☀️ ☀️ ☀️❄️❄️ ☀️☀️☀️☀️ ☀️❄️ ❄️ " "☀️☀️☀️☀️ ☀️❄️ ❄️ ☀️☀️☀️☀️ ❄️❄️☀️ ❄️❄️❄️ ❄️☀️☀️ ☀️❄️❄️ ☀️❄️☀️ ❄️❄️❄️ ☀️☀️❄️ " "❄️❄️☀️ ☀️☀️☀️☀️ ❄️ ☀️☀️☀️☀️❄️ ☀️☀️☀️☀️❄️ ❄️❄️ ☀️☀️ ☀️❄️☀️☀️ ☀️ ☀️☀️☀️ " "❄️☀️☀️☀️ ☀️ ❄️ ☀️❄️❄️ ☀️ ☀️ ❄️☀️ ☀️❄️❄️ ☀️❄️ ☀️☀️☀️ ☀️☀️☀️☀️ ☀️☀️ " "❄️☀️ ❄️❄️☀️ ❄️ ❄️❄️❄️ ❄️☀️ ☀️❄️ ❄️☀️ ❄️☀️☀️ ❄️☀️☀️☀️ ☀️❄️ ☀️❄️☀️☀️ " "❄️ ☀️☀️ ❄️❄️ ❄️❄️❄️ ☀️❄️☀️ ☀️ ☀️❄️ ☀️❄️☀️☀️ ❄️❄️❄️ ❄️☀️ ❄️❄️☀️ " "☀️❄️ ❄️ ☀️ ☀️❄️☀️☀️ ☀️ ❄️❄️☀️ ☀️❄️☀️ ☀️❄️ ☀️❄️❄️☀️ ☀️☀️☀️☀️ " "☀️❄️☀️☀️ ☀️☀️ ❄️☀️ ☀️ ❄️❄️❄️ ❄️☀️ ☀️☀️❄️❄️❄️ ☀️☀️☀️☀️❄️ ❄️❄️ ☀️❄️ " "❄️☀️❄️❄️ ☀️❄️❄️❄️❄️ ❄️❄️❄️☀️☀️ ☀️☀️☀️☀️❄️ ☀️☀️☀️☀️❄️ ❄️ ❄️❄️❄️ " "☀️❄️ ☀️❄️☀️☀️ ☀️☀️❄️☀️ ☀️❄️☀️ ☀️ ❄️☀️☀️ ☀️☀️☀️❄️ ☀️❄️ ☀️☀️ ☀️❄️☀️☀️" ) text = text.replace('☀️', '.').replace('❄️', '-') text = text.replace(' ', ' / ') text = text.replace(' ', ' ') words = text.split(' / ') decoded_words = [] for word in words: letters = word.split() decoded_letters = [MORSE[code] for code in letters if code in MORSE] decoded_words.append(''.join(decoded_letters)) message = ' '.join(decoded_words) print(message)

Simple look up table | greenya | Odin Solutions

package main import "core:fmt" import "core:strings" MESSAGE := #load("message.txt", string) DOT :: "☀️" DASH :: "❄️" CODE_BREAK :: " " // 3 spaces WORD_BREAK :: " " // 7 spaces main :: proc () { message_trimmed := strings.trim_space(MESSAGE) fmt.println("---- INPUT ----") fmt.println(message_trimmed) morse_lut := gen_morse_lut() sb := strings.builder_make() for word in strings.split(message_trimmed, WORD_BREAK) { for code in strings.split(word, CODE_BREAK) { fmt.assertf(code in morse_lut, "Unexpected code `%s`", code) strings.write_byte(&sb, morse_lut[code]) } strings.write_byte(&sb, ' ') } fmt.println("---- OUTPUT ----") fmt.println(strings.to_string(sb)) } // https://upload.wikimedia.org/wikipedia/commons/b/b5/International_Morse_Code.svg gen_morse_lut :: proc (allocator := context.allocator) -> map [string] u8 { m := make(map [string] u8, allocator) m[DOT+DASH] = 'a' m[DASH+DOT+DOT+DOT] = 'b' m[DASH+DOT+DASH+DOT] = 'c' m[DASH+DOT+DOT] = 'd' m[DOT] = 'e' m[DOT+DOT+DASH+DOT] = 'f' m[DASH+DASH+DOT] = 'g' m[DOT+DOT+DOT+DOT] = 'h' m[DOT+DOT] = 'i' m[DOT+DASH+DASH+DASH] = 'j' m[DASH+DOT+DASH] = 'k' m[DOT+DASH+DOT+DOT] = 'l' m[DASH+DASH] = 'm' m[DASH+DOT] = 'n' m[DASH+DASH+DASH] = 'o' m[DOT+DASH+DASH+DOT] = 'p' m[DASH+DASH+DOT+DASH] = 'q' m[DOT+DASH+DOT] = 'r' m[DOT+DOT+DOT] = 's' m[DASH] = 't' m[DOT+DOT+DASH] = 'u' m[DOT+DOT+DOT+DASH] = 'v' m[DOT+DASH+DASH] = 'w' m[DASH+DOT+DOT+DASH] = 'x' m[DASH+DOT+DASH+DASH] = 'y' m[DASH+DASH+DOT+DOT] = 'z' m[DOT+DASH+DASH+DASH+DASH] = '1' m[DOT+DOT+DASH+DASH+DASH] = '2' m[DOT+DOT+DOT+DASH+DASH] = '3' m[DOT+DOT+DOT+DOT+DASH] = '4' m[DOT+DOT+DOT+DOT+DOT] = '5' m[DASH+DOT+DOT+DOT+DOT] = '6' m[DASH+DASH+DOT+DOT+DOT] = '7' m[DASH+DASH+DASH+DOT+DOT] = '8' m[DASH+DASH+DASH+DASH+DOT] = '9' m[DASH+DASH+DASH+DASH+DASH] = '0' return m }