LINUX.ORG.RU
ФорумTalks

2Demetrio


0

0

.- --.. -... ..- -.- .- / -- --- .-. --.. . -....- / .-. .- --.. -. --- .-- .. -.. -. --- ... - -..- / -.- .-.. .. -. --- .--. .. ... .. --..-- / - .- .--- -. -.-- .--- / -.- --- -.. / -.. .-.. .-.- / .-. .- ... .--. .-. --- ... - .-. .- -. . -. .. .-.- / .--. --- .-. -. --- --. .-. .- ..-. .. .. .-.-.-

.. --.. --- -... .-. . - . -. / .-.. . --- -. .- .-. -.. --- / -.. .- / .-- .. -. ---. .. / ... / -.-. . .-.. -..- ..-- / -- --- .-. .- .-.. -..- -. --- --. --- / .-. .- --.. .-.. --- ...- . -. .. .-.- / .--. --- .-.. .. - .. ---. . ... -.- .. .... / .--. .-. --- - .. .-- -. .. -.- --- .-- .-.-.-

.-- / -... --- .-.. -..- ---- .. -. ... - .-- . / -.-. .. .-- .. .-.. .. --.. --- .-- .- -. -. -.-- .... / ... - .-. .- -. / -.. --- ... - ..- .--. / -.- / .- --.. -... ..- -.- . / -- --- .-. --.. . / .-. .- --.. .-. . ---- . -. / - --- .-.. -..- -.- --- / ... / .---- ---.. / .-.. . - .-.-.-

не селён в морзянке...

Pi ★★★★★
()

Азбука Морзе - разновидность клинописи, тайный код для распространения порнографии. Изобретен Леонардо да Винчи с целью морального разложения политических проривников. В большинстве цивилизованных стран доступ к азбуки Морзе разрешен только с 18 лет.

ero-sennin ★★
()
Ответ на: комментарий от lirq

В процессе пожирания моего моска абсурдопедией в оный пришла мысль, что неплохо бы запостить на ЛОРе послание кому-нибудь из модераторов в азбуке морзе.

RommeDeSerieux
() автор топика

Где-то в английской абсурдопедии была статья, состоявшая только из 'А', не могу никак найти ;)

stassats ★★★★
()
Ответ на: комментарий от stassats

Где-то в английской абсурдопедии была статья, состоявшая только из 'Developers', могу легко найти ;)

anonymous
()
Ответ на: комментарий от Inoq

Надо было ещё дождаться 22-го числа 22-го месяца 2222-го года. :D

ero-sennin ★★
()
Ответ на: комментарий от Krechet

Ну, сами напросились! Have a nice bugz!

(defparameter morse-chars '(
(".-" "A") ("-..." "Б") (".--" "В") ("--." "Г") ("-.." "Д") ("." "Е")
("...-" "Ж") ("--.." "З") (".." "И") (".---" "Й") ("-.-" "К") (".-.." "Л")
("--" "М") ("-." "H") ("---" "О") (".--." "П") (".-." "P") ("..." "С")
("-" "Т") ("..-" "У") ("..-." "Ф") ("...." "Х") ("-.-." "Ц") ("---." "Ч")
("----" "Ш") ("--.-" "Щ") ("-..-" "Ь") ("-.--" "Ы") ("..-.." "Э") ("..--" "Ю")
(".-.-" "Я") (".----" "1") ("..---" "2") ("...--" "3") ("....-" "4") ("....." "5")
("-...." "6") ("--..." "7") ("---.." "8") ("----." "9") ("-----" "0") ("......" ".")
(".-.-.-" ",") ("-..-." "/") ("..--.." "?") ("--..--" "!") ("-...-" "|") 
 ("......." "\\") ("......." "\\") (".--.-." "@")))

(defun type-morse-char (w &optional (s morse-chars))
    (let ((c (first s)))
    (cond
        ((null s) (format t "<unknown>"))
        ((equal w (first c)) (format t "~A" (first (rest c))))
        (t (type-morse-char w (rest s)))))) 
        
(defun morse (s &optional (w ""))
    (let ((c (read-char s nil)))
    (cond
        ((null c) nil)
        ((or (eq c #\.) (eq c #\-)) (morse s (concatenate 'string w (string c))))
        ((equal "" w) (morse s))
        (t (progn (type-morse-char w) (morse s))))))
        
(morse *standard-input*)

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

Лисп тру, но на Питоне всё равно короче. =)

#!/usr/bin/env python
#vim:fileencoding=utf-8

from sys import stdin

morse_chars = {
".-":     "A", "-...":   "Б", ".--":     "В", "--.":     "Г", "-..":     "Д",
".":      "Е", "...-":   "Ж", "--..":    "З", "..":      "И", ".---":    "Й",
"-.-":    "К", ".-..":   "Л", "--":      "М", "-.":      "H", "---":     "О",
".--.":   "П", ".-.":    "P", "...":     "С", "-":       "Т",  "..-":    "У",
"..-.":   "Ф", "....":   "Х", "-.-." :   "Ц", "---.":    "Ч", "----":    "Ш",
"--.-":   "Щ", "-..-":   "Ь", "-.--" :   "Ы", "..-..":   "Э", "..--":    "Ю",
".-.-":   "Я", ".----":  "1", "..---":   "2", "...--":   "3", "....-":   "4",
".....":  "5", "-....":  "6", "--...":   "7", "---..":   "8", "----.":   "9",
"-----":  "0", "......": ".", ".-.-.-":  ",", "-..-.":   "/", "..--..":  "?",
"--..--": "!", "-...-":  "|", ".......": "\\",".......": "\\", ".--.-.": "@",
}

for line in stdin:
    for word in line.split('/'):
        print "".join(morse_chars.get(char, '<unknown>') for char in word.split()),

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

Зато это удивительно криво работает если в инпуте невалидные символы. Изволь пофиксить чтобы имелась возможнось сравнить по длине с одникаковым функционалом.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

Это ещё разобраться надо, кто тут криво работает! :P Мой скрипт хоть пробелы вставляет между словами. :) А вообще, была задача расшифровать кусок морзянки из первого поста минимальными усилиями, а не сочинять многоцелевой транслятор с армейской дуракоустойчивостью. :D

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

Ну, вообще в морзянке для пробелов меж словами вроде нету 
стандартных стредствов, но еслихош... Вот версия укороченая и поправленая:

(defparameter morse-chars '(
(".-" "A") ("-..." "Б") (".--" "В") ("--." "Г") ("-.." "Д") ("." "Е")
("...-" "Ж") ("--.." "З") (".." "И") (".---" "Й") ("-.-" "К") (".-.." "Л")
("--" "М") ("-." "H") ("---" "О") (".--." "П") (".-." "P") ("..." "С")
("-" "Т") ("..-" "У") ("..-." "Ф") ("...." "Х") ("-.-." "Ц") ("---." "Ч")
("----" "Ш") ("--.-" "Щ") ("-..-" "Ь") ("-.--" "Ы") ("..-.." "Э") ("..--" "Ю")
(".-.-" "Я") (".----" "1") ("..---" "2") ("...--" "3") ("....-" "4") ("....." "5")
("-...." "6") ("--..." "7") ("---.." "8") ("----." "9") ("-----" "0") ("......" ".")
(".-.-.-" ",") ("-..-." "/") ("..--.." "?") ("--..--" "!") ("-...-" "|")
("......." "\\") ("......." "\\") (".--.-." "@")))

(defparameter valid-morse '(#\. #\-))

(defun morse (s &optional (w ""))
    (let ((c (read-char s nil)))
    (cond
        ((null c) nil)
        ((find c valid-morse) (morse s (concatenate 'string w (string c))))
        ((equal "" w) (when (eq #\/ c) (format t " ")) (morse s))
        (t ((lambda (x) (format t "~A" (if (null x) "<unknown>" (first (rest x)))))
            (assoc-if #'(lambda (x) (string= x w)) morse-chars)) (morse s)))))

(morse *standard-input*)

> сочинять многоцелевой транслятор с армейской дуракоустойчивостью.

Значит питон для этого малопригоден? Жаль, я уж было собрался выучить...

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

#!/usr/bin/env python
#vim:fileencoding=utf-8

from sys import stdin
import re

morse_chars = {
".-":     "A", "-...":   "Б", ".--":     "В", "--.":     "Г", "-..":     "Д",
".":      "Е", "...-":   "Ж", "--..":    "З", "..":      "И", ".---":    "Й",
"-.-":    "К", ".-..":   "Л", "--":      "М", "-.":      "H", "---":     "О",
".--.":   "П", ".-.":    "P", "...":     "С", "-":       "Т",  "..-":    "У",
"..-.":   "Ф", "....":   "Х", "-.-." :   "Ц", "---.":    "Ч", "----":    "Ш",
"--.-":   "Щ", "-..-":   "Ь", "-.--" :   "Ы", "..-..":   "Э", "..--":    "Ю",
".-.-":   "Я", ".----":  "1", "..---":   "2", "...--":   "3", "....-":   "4",
".....":  "5", "-....":  "6", "--...":   "7", "---..":   "8", "----.":   "9",
"-----":  "0", "......": ".", ".-.-.-":  ",", "-..-.":   "/", "..--..":  "?",
"--..--": "!", "-...-":  "|", ".......": "\\",".......": "\\", ".--.-.": "@",
}
morse_char = re.compile('[.-]+')

for line in stdin:
    for word in line.split('/'):
        print ''.join(morse_chars.get(char, '<unknown>')
                 for char in morse_char.findall(word)),

PS На перле, наверно, ещё короче получится. :) Хоть я его и не люблю.
  

ero-sennin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.