Anonymous user
Playfair cipher: Difference between revisions
m
→{{header|zkl}}: update
(Updated D entry) |
m (→{{header|zkl}}: update) |
||
Line 1,480:
Punting Q out of the alphabet.
<lang zkl>fcn genKeyTable(key){
key=(key - " qQ").toUpper().unique();
key + (["A".."Z"].aggregate(String).walk() - "Q" - key);
}</lang>
<lang zkl>fcn playfair(text,keyTable){ // text is a-z only
text=text.toUpper();
text-=text -
if(text.len().isOdd) text+="Z";
row:='wrap(c){ keyTable.index(c)/5 };
Line 1,492:
ltrBelow:='wrap(c){ keyTable[(keyTable.index(c)+5)%25] };
ltrAt:='wrap(r,c){ keyTable[r*5+c] };
(text.toUpper()-"Q").pump(String,
'wrap(a,b){
if(a==b) b="X";
if((ra:=row(a))
if((ca:=col(a))
return(ltrAt(ra,cb)+ltrAt(rb,ca));
});
Line 1,506:
ltrUp:='wrap(c){ n:=keyTable.index(c)-5; if(n<0)n+=25; keyTable[n%25] };
ltrAt:='wrap(r,c){ keyTable[r*5+c] };
text.pump(String,
'wrap(a,b){
if((ra:=row(a))
if((ca:=col(a))
return(ltrAt(ra,cb)+ltrAt(rb,ca));
});
|