Morse Code with Associative Array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Morse Code with Associative Array
# 8  
Old 11-28-2014
Just add a newline character to the printf command
Code:
printf "%s\n" SP

Don't forget to do the same for the other printf command between else and fi.
The third printf does not need to be modified.

Hope this will produce the required output.
This User Gave Thanks to junior-helper For This Post:
# 9  
Old 11-29-2014
Thats a fun excercise Smilie

Here is my test to reverse the input as well:
I mean, it has to be able to translate it both ways, doesnt it? Smilie
Code:
+ ~ $ morse "Hello UNIX DOT com"
....;.;.-..;.-..;---;SP;..-;-.;..;-..-;SP;-..;---;-;SP;-.-.;---;--;EOT

:) ~ $ morse "....;.;.-..;.-..;---;SP;..-;-.;..;-..-;SP;-..;---;-;SP;-.-.;---;--;EOT"
HELLO UNIX DOT COM 
EOT

:) ~ $ morse -l "....;.;.-..;.-..;---;SP;..-;-.;..;-..-;SP;-..;---;-;SP;-.-.;---;--;EOT"
HELLO 
UNIX 
DOT 
COM 
EOT
:) ~ $

Show me yours, i'll show you mine Smilie

Last edited by sea; 11-29-2014 at 12:39 AM..
These 2 Users Gave Thanks to sea For This Post:
# 10  
Old 11-29-2014
Code:
-;.-;-;--SP-;.;.;..;--;.;.SPSP.;.;.;...;.;.;..SPSP.;-;.;.-;-;--;-;--;.;-.;.-;.-;-;.SP.;.;-;.-;-;--;-;.;-.;-;-.;--;-;.;--;.;.SP--;-;-SP.;.;...SP-.;.;.;..SP-;.;-;.-;-;--;.;..EOT

This User Gave Thanks to junior-helper For This Post:
# 11  
Old 11-29-2014
Thank you kind sir!

I must say - for a novice trying to learn Unix, this board has been a godsend. I continue to be blown away by the number of people willing to help. Not only that, but they're always polite and welcoming toward new members. Thank you!!
# 12  
Old 11-29-2014
Note that i 'had' to change the morse-codes per letter to be without a ;, furthermore it requires now a ; before SP (read: after every letter).
But 'forcing' that, one can switch between 2 output types, all on one line, or each word a seperate line.

Code:
morse "--;.-;-.--;SP-;....;.;SP..-.;---;.-.;-.-.;.;SP-...;.;SP.--;..;-;....;SP-.--;---;..-;EOT"

Code:
morse ".-;-.;-..;SP..;SP....;---;.--.;.;SP-;....;..;...;SP.--;.-;...;SP-.;---;SP....;---;--;.;.--;---;.-.;-.-;EOT"

Smilie Smilie

EDIT:
Bleh, me alrady scripting way too much..
But thanks for the mind break Smilie

Last edited by sea; 11-29-2014 at 12:09 PM.. Reason: Added option: -q (dont show EOT), and -l (show word per lines)
This User Gave Thanks to sea For This Post:
# 13  
Old 11-29-2014
Now you're just showing off
# 14  
Old 11-29-2014
The bash utility on the current OS X (GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin14)) does not support associative arrays. With a 1993 or later version of the Korn shell, you could try something like:
Code:
#!/bin/ksh
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]="--..," [0]="-----," [1]=".----," [2]="..---,"
	[3]="...--," [4]="....-," [5]=".....," [6]="-....," [7]="--...,"
	[8]="---..," [9]="----.," [ ]="SP," [.]="STOP," )

while [ $# -gt 0 ]
do	arg="$1"
	for (( i = 0; i < ${#arg}; i++ ))
	do	printf '%s' "${Morse["${arg:i:1}"]}"
	done
	[ $# = 1 ] && printf 'EOT\n' || printf '%s' "${Morse[ ]}"
	shift
done

which could be invoked as:
Code:
./morse.ksh SOS "1 2 3" "THIS IS A TEST."

to produce the output:
Code:
...,---,...,SP,.----,SP,..---,SP,...--,SP,-,....,..,...,SP,..,...,SP,.-,SP,-,.,...,-,STOP,EOT

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Loading associative array from exported function

Hello. I have an export of an associative array build using declare -p SOME_ARRAY_NAME > SOME_FILE_NAME.txt. Producing some thing like declare -A SOME_ARRAY_NAME=( ="some_text" ="a_text" ......... ="another_text" ) in a text file. I have a stock of functions which are sourced from... (1 Reply)
Discussion started by: jcdole
1 Replies

2. Shell Programming and Scripting

Associative array index question

I am trying to assign indexes to an associative array in a for loop but I have to use an eval command to make it work, this doesn't seem correct I don't have to do this with regular arrays For example, the following assignment fails without the eval command: #! /bin/bash read -d "\0" -a... (19 Replies)
Discussion started by: Riker1204
19 Replies

3. Shell Programming and Scripting

Using associative array for comparison

Hello together, i make something wrong... I want an array that contains information to associate it for further processing. Here is something from my bash... You will know, what I'm trying to do. I have to point out in advance, that the variable $SYSOS is changing and not as static as in my... (2 Replies)
Discussion started by: Decstasy
2 Replies

4. Shell Programming and Scripting

Associative Array with more than one item per entry

Hi all I have a problem where i have a large list ( up to 1000 of items) and need to have 2 items pulled from it into variables in a bash script my list is like the following and I could have it as an array or possibly an external text file maintained separately. Every line is different and... (6 Replies)
Discussion started by: kcpoole
6 Replies

5. Shell Programming and Scripting

Associative array

I have an associative array named table declare -A table table="fruit" table="veggie" table="GT" table="eminem" Now say I have a variable returning the value highway How do I find corresponding value GT ?? (this value that I find (GT in this case) is supposed to be the name of a mysql... (1 Reply)
Discussion started by: leghorn
1 Replies

6. Shell Programming and Scripting

Help needed on Associative array in awk

Hi All, I got stuck up with shell script where i use awk. The scenario which i am working on is as below. I have a file text.txt with contents COL1 COL2 COL3 COL4 1 A 500 400 1 B 500 400 1 A 500 200 2 A 290 300 2 B 290 280 3 C 100 100 I could able to sum col 3 and col4 based on... (3 Replies)
Discussion started by: imsularif
3 Replies

7. Shell Programming and Scripting

awk, associative array, compare files

i have a file like this < '393200103052';'H3G';'20081204' < '393200103059';'TIM';'20110111' < '393200103061';'TIM';'20060206' < '393200103064';'OPI';'20110623' > '393200103052';'HKG';'20081204' > '393200103056';'TIM';'20110111' > '393200103088';'TIM';'20060206' Now i have to generate a file... (9 Replies)
Discussion started by: shruthi123
9 Replies

8. Shell Programming and Scripting

Shell quiz: emulate an associative array

Most shells flavors do not have associative arrays a.k.a. maps. How would you emulate an associative array? I had this problem once and found a working solution, but I don't want to spoil the game hence I wont tell it. Wonder if anyone comes up with something better. (5 Replies)
Discussion started by: colemar
5 Replies

9. Shell Programming and Scripting

Perl: Sorting an associative array

Hi, When using sort on an associative array: foreach $key (sort(keys(%opalfabet))){ $value = $opalfabet{$key}; $result .= $value; } How does it handle double values? It seems to me that it removes them, is that true? If so, is there a way to get... (2 Replies)
Discussion started by: tine
2 Replies

10. Shell Programming and Scripting

Associative Array

Hi, I am trying to make an associative array to use in a popup_menu on a website. Here is what i have: foreach $entr ( @entries ) { $temp_uid = $entr->get_value(uid); $temp_naam = $entr->get_value(sn); $s++; } This is the popup_menu i want to use it in. popup_menu(-name=>'modcon',... (4 Replies)
Discussion started by: tine
4 Replies
Login or Register to Ask a Question