Python-VBA编程500例-025(入门级)

目录

1、摩尔斯电码:

1-1、Python:

1-2、VBA:

2、相关文章:

Python算法之旅:Myelsa的Python算法之旅(高铁直达)-CSDN博客

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信

        摩尔斯电码(Morse Code)是一种用于将字母、数字和标点符号转换为短脉冲(点)和长脉冲(划)的编码系统。它最初用于电报通信,但现在在现实生活中有许多其他应用。常见的应用场景有:

1、紧急救援:摩尔斯编码在紧急救援中起到重要作用。例如,船只或飞机遇到危险时,可以使用摩尔斯编码发送SOS信号,以便其他人员能够及时救援。

2、通信与交流:摩尔斯编码在无线电通信中广泛使用。它被用于海事通信、航空通信以及一些无线电爱好者之间的交流。摩尔斯编码也被用于一些特殊通信需求,如军事通信和山地救援。

3、导航与定位:摩尔斯编码在导航和定位系统中有应用。例如,在灯塔上使用摩尔斯编码的光信号来指示船只安全的航道。此外,一些探险家和登山者在野外活动中使用摩尔斯编码来进行定位和导航。

4、训练与竞赛:摩尔斯编码在一些训练和竞赛中被使用。例如,一些军事组织和无线电爱好者组织会组织摩尔斯编码的速度和准确性竞赛,以提高操作者的技能。

5、艺术与文化:摩尔斯编码也被用于艺术和文化领域。一些艺术家使用摩尔斯编码来创作音乐或视觉艺术作品。此外,一些文化活动中也会使用摩尔斯编码,例如在音乐节或展览中传递特殊信息。

6、密码学:在密码学中,摩尔斯编码可以作为一种简单的替换密码。通过将每个字符替换为对应的摩尔斯编码,可以对信息进行加密。

7、计算机科学:在计算机科学中,摩尔斯编码被用于数据压缩和编码技术。例如,Huffman编码就是一种基于摩尔斯编码思想的压缩算法。

        总的来说,摩尔斯电码在现代社会中仍然具有一定的实际应用价值,并在多个领域发挥着重要作用。同时,随着技术的发展,摩尔斯电码的应用也在不断扩展和创新。

1、摩尔斯电码:
1-1、Python:
# 1.问题描述:
# 摩尔斯电码是一种标准的编码形式,把每个字母映射到一系列点和短划线.
# 给定一个单词列表,每个单词中字符对应的摩尔斯电码按顺序连接起来,从而形成一种摩尔斯电码的组合形式,最终返回所有单词对应摩尔斯电码不同组合形式的数量.
# 2.问题示例:
# 输入words = ["myelsa", "my", "myelsa", "my"],输出2.每个单词的摩尔斯电码组合形式如下:
# myelsa -> ---.--..-......-
# my     -> ---.--
# myelsa -> ---.--..-......-
# my     -> ---.--
# 也就是说摩尔斯电码的组合只有两种:"---.--..-......-" 和 "---.--"
# 3.代码实现:
class Solution:
    def uniqueMorseRepresentations(self, words):
        """
        返回给定单词列表的不同摩斯码表示的数量。
        参数words: 单词列表
        返回值: 不同摩斯码表示的数量
        """
        # 定义摩斯码字典,其中键为字母,值为对应的摩斯码
        morse_code = {
            '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': "--.."
        }
        # 使用集合来保存出现过的摩斯码
        unique_morse = set()
        # 遍历单词列表
        for word in words:
            # 初始化摩斯码字符串
            morse_word = ''
            # 遍历单词中的每个字母
            for char in word:
                # 拼接摩斯码
                morse_word += morse_code[char.lower()]
            # 将拼接好的摩斯码添加到集合中
            unique_morse.add(morse_word)
        # 返回集合中不同摩斯码的数量
        return len(unique_morse)
# 主函数
if __name__ == '__main__':
    # 输入input_words变量值
    input_words = ["myelsa", "my", "myelsa", "my"]
    # 实例化Solution类
    solution = Solution()
    # 打印并输出结果
    print("输入为:", input_words)
    print("输出为:", solution.uniqueMorseRepresentations(input_words))
# 4.运行结果:
# 输入为: ['myelsa', 'my', 'myelsa', 'my']
# 输出为: 2
1-2、VBA:
Rem 自定义函数,功能:摩尔斯电码
Function UniqueMorseRepresentations(words() As Variant) As Long
    ' 声明两个对象变量 morseDict 和 uniqueMorse 用于存储摩斯电码字典和唯一摩尔斯电码集合
    Dim morseDict As Object, uniqueMorse As Object
    ' 声明循环计数器 i 和 j
    Dim i As Integer, j As Integer
    ' 声明用于遍历数组 words 的变量 word
    Dim word As Variant
    ' 声明用于构建摩尔斯电码字符串的变量 morseWord 和 char
    Dim morseWord As String, char As String
      
    ' 定义摩斯电码常量数组
    Const morseCode As String = ".- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -. --- .--. --.- .-. ... - ..- ..- ...- .-- -..- -.-- --.."
    ' 定义字母常量数组
    Const letters As String = "abcdefghijklmnopqrstuvwxyz"
    ' 创建一个摩斯电码字典对象
    Set morseDict = CreateObject("Scripting.Dictionary")
    ' 遍历 letters 字符串,为每一个字母创建摩斯电码条目
    For i = 1 To Len(letters)
        ' 将字母和对应的摩尔斯电码添加到字典中
        morseDict.Add mid(letters, i, 1), mid(morseCode, i * 3 - 2, 3)
    Next i
    ' 创建一个用于存储唯一摩尔斯电码的对象
    Set uniqueMorse = CreateObject("Scripting.Dictionary")
    ' 遍历 words 数组中的每个单词
    For Each word In words
        ' 初始化摩尔斯电码字符串为空
        morseWord = ""
        ' 遍历单词中的每个字符
        For j = 1 To Len(word)
            ' 获取当前字符的小写形式
            char = LCase(mid(word, j, 1))
            ' 检查字符是否在摩斯电码字典中
            If morseDict.Exists(char) Then
                ' 将当前字符的摩斯电码追加到 morseWord 字符串中
                morseWord = morseWord & morseDict(char)
            End If
        Next j
        ' 检查 morseWord 是否已经在 uniqueMorse 集合中存在
        If Not uniqueMorse.Exists(morseWord) Then
            ' 如果不存在,则添加到 uniqueMorse 集合中
            uniqueMorse.Add morseWord, Nothing
        End If
    Next word
    ' 返回 uniqueMorse 集合中的项目数量,即唯一摩尔斯电码的数量
    UniqueMorseRepresentations = uniqueMorse.count
End Function
Rem 执行程序,功能:调用自定义函数UniqueMorseRepresentations,在立即窗口中输出结果
Sub TestRun()
    ' 声明一个 Variant 类型的数组 input_words 和一个 Long 类型的变量 result
    Dim input_words() As Variant
    Dim result As Long
      
    ' 初始化 input_words 数组并赋值
    input_words = Array("myelsa", "my", "myelsa", "my")
    ' 调用 UniqueMorseRepresentations 函数,并将结果赋值给 result
    result = UniqueMorseRepresentations(input_words)
    ' 使用 Debug.Print 输出结果
    Debug.Print "输出为:" & result
End Sub
'结果输出:
'输出为:2

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。

2、相关文章:

2-1、Python-VBA编程500例-023(入门级) 

2-2、Python-VBA编程500例-024(入门级) 

2-3、Python-VBA编程500例-026(入门级) 

2-4、Python-VBA编程500例-027(入门级) 

Python算法之旅:Myelsa的Python算法之旅(高铁直达)-CSDN博客
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

  • 34
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神奇夜光杯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值