Rot-13: Difference between revisions

Content added Content deleted
(Improved D version)
m (Syntax update)
Line 1,596: Line 1,596:


ch@(String Character traits) rot13
ch@(String Character traits) rot13
[| value upper |
[| value |
upper: ch isUppercase.
upper ::= ch isUppercase.
value: (ch toLowercase as: Integer).
value := ch toLowercase as: Integer.
(value >= 97) /\ (value < 110)
(value >= 97) /\ [value < 110]
ifTrue: [value: value + 13]
ifTrue: [value += 13]
ifFalse: [(value > 109) /\ (value <= 122)
ifFalse: [(value > 109) /\ [value <= 122]
ifTrue: [value: value - 13]].
ifTrue: [value -= 13]].
upper
upper
ifTrue: [(value as: String Character) toUppercase]
ifTrue: [(value as: String Character) toUppercase]
Line 1,620: Line 1,620:


<lang slate>ch@(String Character traits) rot13
<lang slate>ch@(String Character traits) rot13
[| value upper |
[| value |
upper: ch isUppercase.
upper ::= ch isUppercase.
value: (ch toLowercase as: Integer).
value := ch toLowercase as: Integer.
(value >= 97) /\ (value < 110)
(value >= 97) /\ [value < 110]
ifTrue: [value: value + 13]
ifTrue: [value += 13]
ifFalse: [(value > 109) /\ (value <= 122)
ifFalse: [(value > 109) /\ [value <= 122]
ifTrue: [value: value - 13]].
ifTrue: [value -= 13]].
upper
upper
ifTrue: [(value as: String Character) toUppercase]
ifTrue: [(value as: String Character) toUppercase]
Line 1,633: Line 1,633:


s@(String traits) rot13
s@(String traits) rot13
[
[| result |
result: s newSameSize.
result ::= s newSameSize.
s doWithIndex: [| :each :index |
s doWithIndex: [| :each :index | result at: index put: each rot13].
result at: index put: each rot13].
result
result
].
].
Line 1,642: Line 1,641:
slate[37]> 'abc123' rot13.
slate[37]> 'abc123' rot13.
'nop123'</lang>
'nop123'</lang>

=={{header|Smalltalk}}==
=={{header|Smalltalk}}==
{{Lines_too_long}}
{{Lines_too_long}}