Magik Says Happy Valentines by Drawing a Heart to Console

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

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) —

推荐阅读:
Freedom of Speech Isn’t So Free  10 Things You Should Do When Starting an Online Store  The Importance of Cybersecurity in Real Life  The Best Productivity Trends and Hacks of 2015  3 Great New Ways Of Generating Money With Content Online  Local SEO 101 For Law Firms [Infographic]  Make Sure You’re On Top of Google’s Mobile-Friendly Algorithm  Best Tools and Apps for Travel Bloggers  On-Page Optimization Tips to Complement Your Great Content  Responsive Design for Newbies [Infographic] 
评论列表
添加评论