Loading...
DHristoskov avatar DHristoskov 211 Точки

[Challenge][Pr.Basic] Morse code [week#1]

С разрешението на господин Наков поствам първата задача от раздел [Challenge], ако има достатъчно интерес ще продължа да го правя и за напред.Има отворена тема в "Предложения и проблеми" така че всеки който има някаква идеи и/или критики може да ги сподели там.

А ето и задачата:Морзовият код е метод за предаване на съобщения посредством къси, дълги тонове и липсата на тон.Днешното предизвикателство ще ни въвлече в интересното начинание да превеждаме текст (английски език) в морзов код, и от там в звукови сигнали, които точно да пресъздадат съобщение с къси, дълги тонове и липсата на тон между отделните букви и думи.

На входа на конзолата ще бъде въведен текст(на английски език).Който трябва да бъде преведен на морзовата азбука, а на изхода трябва да бъде отпечатан преведеният текст и да се чуе цялото съобщение от къси и дълги тонове.

Примерен вход:                                                                                                                               

S O S   -   въведената фраза за превод (символите или думите са разделени с празно пространство);                                                                                                                            

Изход от конзолата:      

1)    . . ./ - - - /. . .   думата преведена в морзов код;                                                                     

2)    Сигнал - три къси тона(. . .), липса на тон( / ), три дълги тона( - - - ), липса на тона( / ) и отново три къси тона( . . . )

Още примери:                                                                                                                 

CSharp    изход:   - . - . . . . . . . . . - . - . . - - .                                                                              

Soft Uni   изход:   . . . - - - . . - . - / . . - - - . . .                                                                                 

My name is   изход:    - - - . - - /- . . - - - . / . . . . .

Съвети и помощ:                                                                                                                    

  Морзова азбука:

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 | - - . .

За да създадете звук един от вариянтите е да прочетете - Console.Beep Method,а за да си осигурите тишината между думите и отделните букви Thread.Sleep Method.Също така може би ще е добре да се запознаете с масиви и цикли.

Задачата е много приятна и забавна надявам, се че ще ви бъде интересно да я решавате.Първите няколко задачи просто ще се опитам да напасна трудността, защото за момента незнам кое за кого е трудно и кое лесно.За това ще се радвам да коментирате и трудността на задачата ,за да мога да реагирам за следващата.Идеята на задачата не е да бъде изключително трудна и да демотивира хората, а да е точно толкова трудна, за да ги мотивира да прочетат нужното и да се справят с решението.Което ще им даде още повече хъс да учат. 

Поради липсата на ясна концепция за Challenge задачите ,всички решили задачата за сега ще получат по едно well done, надявам се да измислим някакво оценяване в бъдеще.

Успех на всички които ще се пробват!Очаквам и коментар за трудността важно е, за да мога да напасна следващата задача.

Тагове:
8
Programming Basics 08/04/2015 20:46:17
Reath avatar Reath 188 Точки

Идеята много ми харесва! Задачката също е много заинтригуваща и интересна. Браво за идеята и успех на всички участници!

0
DHristoskov avatar DHristoskov 211 Точки

Благодаря иска ми се повече хора да пробват да решат задачата, особено от моята група C# Basic, защото съм се постарал задача да е забавна и в същото време да учи на нещо ново.Надявам се да съм успял.

0
i.alidzhikov avatar i.alidzhikov 63 Точки

Моето решение е следното. Може да дадеш пример как да се имплементират късият и дългият тон, съответно каква им е честотата и каква им е продължителността на тона. Аз ги имплементирах чрез две константни честоти, но когато сравня моя транслатор с някакъв от Google, честотите се разминават. Иначе адмирации, задачата не е лоша. Продължавай в същия дух! : )

1
08/04/2015 19:59:16
DHristoskov avatar DHristoskov 211 Точки

Честно казано честотите, които си задал са много близки до тези, които аз съм задал.Но идеята е решението да удовлетвори теб самия на първо място, затова и няма толкова детайли по самата задача.Важното е да получиш коректен изход и да споделиш решението.За да може всеки да го прегледа и да добие представа как се случват нещата, четенето на код си е учене.

Well done!

0
a1mbiser avatar a1mbiser 63 Точки

Ето едно решение и от мен (много сходно с това на колегата  i.alidzhikov  не съм сигурен доколко възпроизвеждането на къси и дълги тонове ми се е получило.

Относно задачата не мисля,че е трудна, a  по-скоро има доста статично писане (големият swtch).Поздравления за идеята и за труда,който си положил за да я реализираш :)

1
DHristoskov avatar DHristoskov 211 Точки

Много се радвам, че има хора които съм успял да заинтригувам със задачата.

Аз съм я направил с масив (всички symbols са в един string масив и ги викам от там)

Well done!

0
08/04/2015 19:58:18
Filkolev avatar Filkolev 4482 Точки

Ето едно решение с речник: ЛИНК.

В речника просто задавам за всяка буква нейната репрезентация като морзов код, в основната програма взимам стринг от конзолата, вдигам в главни букви и го итерирам с foreach. Подавам текущия символ на метод, който взима кода от речника, итерира го и за всеки символ от кода пуска съответния звук. Проверката дали даден символ с вкаран в речника е функционална, но реално представлява един if, т.е. подавам символът на метода само ако го има.

2
DHristoskov avatar DHristoskov 211 Точки

Много се радвам, че има различни решения на задачата.За мен е изключително полезно дано и за останалите колеги да е така.

Well done!

0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

И от мен едно решение - с речници за нотите и за морзовата азбука - и символ по символ печата и свири морзовия код.

Много интересна задача - поздравления за автора!

 

1
08/04/2015 21:32:10
DHristoskov avatar DHristoskov 211 Точки

Все повече и повече хора се включват в предизвикателството,което е страхотно.Задачата не е моя просто съм я преработил, добавил съм някои неща,добах и поясненията, таблицата с морзовия код и малко съм я понапудрил.Защото беше доста постна само 2 реда задача.

Well done!

1
08/04/2015 21:28:22
DHristoskov avatar DHristoskov 211 Точки

Всеки който има желанието да се пробва със задачата,но среща затруднения може да прегледа вече постнатите решения от колегите,за да си открадне идея, ако въпреки това среща някакви затруднения спокойно може да пита, в най-лошият случай аз ще се опитам да помогна.

1
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравейте колеги,

Димитър ( DHristoskov ) е прав,

не е необходимо следващите решения да са напълно различни. Виждам например поне една възможност за оптимизация: моето решение едновременно печата и play-ва тона на дадения знак от Морзовата азбука, но сравнено с решенията на колегите - моето е твърде дълго. Въпрос: можете ли да намерите решение което дава същата функционалност( едновременно да печата и play-ва тона на дадения знак ), но да е по-кратко.

Каним който има желание да опита :)

1
09/04/2015 17:17:40
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.