Rot-13: Difference between revisions
Content added Content deleted
No edit summary |
|||
Line 5,448: | Line 5,448: | ||
Ur'f n erny Abjurer Zna. |
Ur'f n erny Abjurer Zna. |
||
He's a real Nowhere Man.</pre> |
He's a real Nowhere Man.</pre> |
||
=={{header|SparForte}}== |
|||
As a structured script. |
|||
<syntaxhighlight lang="ada">#!/usr/local/bin/spar |
|||
pragma annotate( summary, "rot13" ); |
|||
pragma annotate( description, "Implement a 'rot-13' function (or procedure, class," ); |
|||
pragma annotate( description, "subroutine, or other 'callable' object as appropriate" ); |
|||
pragma annotate( description, "to your programming environment). The definition of the" ); |
|||
pragma annotate( description, "rot-13 function is to simply replace every letter of the" ); |
|||
pragma annotate( description, "ASCII alphabet with the letter which is 'rotated' 13" ); |
|||
pragma annotate( description, "characters 'around' the 26 letter alphabet from its" ); |
|||
pragma annotate( description, "normal cardinal position (wrapping around from 'z' to" ); |
|||
pragma annotate( description, "'a' as necessary). Thus the letters 'abc' become 'nop'" ); |
|||
pragma annotate( description, "and so on. Technically rot-13 is a 'monoalphabetic" ); |
|||
pragma annotate( description, "substitution cipher' with a trivial 'key'. A proper" ); |
|||
pragma annotate( description, "implementation should work on upper and lower case" ); |
|||
pragma annotate( description, "letters, preserve case, and pass all non-alphabetic" ); |
|||
pragma annotate( description, "characters in the input stream through without" ); |
|||
pragma annotate( description, "alteration." ); |
|||
pragma annotate( see_also, "http://rosettacode.org/wiki/Rot-13" ); |
|||
pragma annotate( author, "Ken O. Burtch" ); |
|||
pragma license( unrestricted ); |
|||
pragma restriction( no_external_commands ); |
|||
procedure rot13 is |
|||
function to_rot13( s : string ) return string is |
|||
ch : character; |
|||
result : string; |
|||
begin |
|||
for i in 1..strings.length( s ) loop |
|||
ch := strings.element( s, i ); |
|||
if strings.is_letter( ch ) then |
|||
if (ch in 'A'..'M') or (ch in 'a'..'m' ) then |
|||
ch := strings.val( numerics.pos( ch ) + 13 ); |
|||
else |
|||
ch := strings.val( numerics.pos( ch ) - 13 ); |
|||
end if; |
|||
end if; |
|||
result := @ & ch; |
|||
end loop; |
|||
return result; |
|||
end to_rot13; |
|||
begin |
|||
? to_rot13( "Big fjords vex quick waltz nymph!" ); |
|||
end rot13;</syntaxhighlight> |
|||
=={{header|SQL}}== |
=={{header|SQL}}== |