Magik Says Happy Valentines by Drawing a Heart to Console

  • 时间:2020-10-12 15:39:01
  • 分类:网络文摘
  • 阅读:150 次

Hey, it is happy valentines today! And I think it would be nice to please my wife with something special. I am learning Magik – which is a OO programming language developed by GE Smallworld, and the following seems a good learning/coding exercise.

heart Magik Says Happy Valentines by Drawing a Heart to Console magik programming

Drawing a Heart to Console in Magik Programming

Draw a Heart Shape to Console using Magik

Drawing heart is a fun exercise.

# Drawing a heart to the console
# Happy Valentine's Day 2019
_package sw
$

_block
    _local c << 178.as_character() # heart symbol
    _local s << ""

    # Magik does not have a write without printing new lines
    # Therefore, we concatenate output strings
    _local concat << _proc(str, char) 
        >> str + char
    _endproc

    # 5 blank lines
    _for i _over range(1, 5) _loop s << concat(s, %newline) _endloop

    _for i _over range(1, 3)
    _loop
        _for j _over range(1, 32 - 2 * i) _loop s << concat(s, %space) _endloop
        _for k _over range(1, 4 * i + 1)  _loop s << concat(s, c) _endloop
        _for l _over range(1, 13 - 4 * i) _loop s << concat(s, %space) _endloop
        _for m _over range(1, 4 * i + 1) _loop s << concat(s, c) _endloop
        s << concat(s, %newline)        
    _endloop

    _for i _over range(1, 3)
    _loop
        _for j _over range(1, 24 + 1) _loop s << concat(s, %space) _endloop
        _for k _over range(1, 29)  _loop s << concat(s, c) _endloop
        s << concat(s, %newline)        
    _endloop

    _for i _over range(7, 1, -1)
    _loop
        _for j _over range(1, 40 - 2 * i) _loop s << concat(s, %space) _endloop
        _for k _over range(1, 4 * i - 1)  _loop s << concat(s, c) _endloop
        s << concat(s, %newline)        
    _endloop

    _for i _over range(1, 39) _loop s << concat(s, %space) _endloop

    # the last tiny bit
    s << concat(s, c)

    # 5 blank lines
    _for i _over range(1, 5) _loop s << concat(s, %newline) _endloop

    write(s)
_endblock

Magik does not provide a write without adding %newline – therefore we concatenate the output string and print it all once to the console.

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
Want More Followers? Try Facebook Notes  Backing Up Your Data 101  How to Remove Duplicate Elements from Vector in C++ using std::u  Javascript’s HashSet Implementation using Hash Map  Using the OpenSSL command to Test the SSL Certificate  Algorithm to Shuffle String in Python3 According to Index  Depth First Search Algorithm to Find the Strobogrammatic Number   Depth First Search Algorithm to Compute the Diameter of N-Ary Tr  Remove the Temporary Files (including Windows.old) on Windows 10  Simulation Algorithm to Compute the Number of Water Bottles 
评论列表
添加评论