-module(prog).
-define(SIDES, 4).
-export([main/0]).
main() ->
msg2rect("helloworldhelloworld").
msg2rect(Message) ->
VChars = length(Message) div ?SIDES,
HChars = VChars + trunc(((length(Message) rem ?SIDES) / 2)),
{Half1, Half2} = lists:
split(trunc(length(Message) / 2), Message), {Top, Rest1} = lists:
split(HChars, Half1), {Bottom, Rest2} = lists:
split(HChars, Half2), io:
format("~s~n", [Top]), msg2rect(lists:
append([Rest1, Rest2]), HChars - 2), io:
format("~s~n", [lists:
reverse(Bottom)]).
msg2rect([], _) ->
ok;
msg2rect([H|T], WSpaces) ->
{Middle, Last} = lists:
split(length(T) - 1, T), io:
format("~s~s~s~n", [Last, lists:
flatten(lists:
duplicate(WSpaces, " ")), lists:
flatten([H])]), msg2rect(Middle, WSpaces).
LW1vZHVsZShwcm9nKS4KIAotZGVmaW5lKFNJREVTLCA0KS4KIAotZXhwb3J0KFttYWluLzBdKS4KIAogCm1haW4oKSAtPgogICAgbXNnMnJlY3QoImhlbGxvd29ybGRoZWxsb3dvcmxkIikuCgptc2cycmVjdChNZXNzYWdlKSAtPgogICAgVkNoYXJzID0gbGVuZ3RoKE1lc3NhZ2UpIGRpdiA/U0lERVMsCiAgICBIQ2hhcnMgPSBWQ2hhcnMgKyB0cnVuYygoKGxlbmd0aChNZXNzYWdlKSByZW0gP1NJREVTKSAvIDIpKSwKICAgIHtIYWxmMSwgSGFsZjJ9ID0gbGlzdHM6c3BsaXQodHJ1bmMobGVuZ3RoKE1lc3NhZ2UpIC8gMiksIE1lc3NhZ2UpLAogICAge1RvcCwgUmVzdDF9ID0gbGlzdHM6c3BsaXQoSENoYXJzLCBIYWxmMSksCiAgICB7Qm90dG9tLCBSZXN0Mn0gPSBsaXN0czpzcGxpdChIQ2hhcnMsIEhhbGYyKSwKICAgIGlvOmZvcm1hdCgifnN+biIsIFtUb3BdKSwKICAgIG1zZzJyZWN0KGxpc3RzOmFwcGVuZChbUmVzdDEsIFJlc3QyXSksIEhDaGFycyAtIDIpLAogICAgaW86Zm9ybWF0KCJ+c35uIiwgW2xpc3RzOnJldmVyc2UoQm90dG9tKV0pLgogCm1zZzJyZWN0KFtdLCBfKSAtPgogICAgb2s7Cm1zZzJyZWN0KFtIfFRdLCBXU3BhY2VzKSAtPgogICAge01pZGRsZSwgTGFzdH0gPSBsaXN0czpzcGxpdChsZW5ndGgoVCkgLSAxLCBUKSwKICAgIGlvOmZvcm1hdCgifnN+c35zfm4iLCBbTGFzdCwgbGlzdHM6ZmxhdHRlbihsaXN0czpkdXBsaWNhdGUoV1NwYWNlcywgIiAiKSksIGxpc3RzOmZsYXR0ZW4oW0hdKV0pLAogICAgbXNnMnJlY3QoTWlkZGxlLCBXU3BhY2VzKS4=