Page 1 of 3 123>
Topic Options
#124248 - 2004-08-01 04:34 PM KiXgolf: Vigenere Cipher - Public coding
Sealeopard Offline
KiX Master
*****

Registered: 2001-04-25
Posts: 11165
Loc: Boston, MA, USA
KiXgolfers:

Time to post your solutions and have the community take a stab at improving your code! The test suite and rules are available here: http://people.bu.edu/jenmeyer/kixtart/kixgolf_vigenere.zip
_________________________
There are two types of vessels, submarines and targets.

Top
#124249 - 2004-08-01 04:42 PM Re: KiXgolf: Vigenere Cipher - Public coding
Howard Bullock Offline
KiX Supporter
*****

Registered: 2000-09-15
Posts: 5809
Loc: Harrisburg, PA USA
Well here is my 390 stroke code that works great except it does not not follow described shifting rules. It shifts the entire table for each letter. Per the rules it passes through any character that is not in the (0-9Z-Aa-z) text string.

I liked the challenge except I think future games should allow more flexibility in the way we get to the end result. This would provide a wider range of approaches to the coded solution.

Code:
Function Vigenere($a,$b, optional $c)

Dim $d,$L,$p,$,$r,$s,$T[62],$x,$z

for $=0 to 25
$s = chr($+65) + $s + chr($+97)
next
$s = "0123456789" + $s

for $z=1 to len($a)
$L=substr($a,$z,1)
$p=instr($s,$L)
if $p
for $x=0 to 61
$=($x+2*$z) mod 62 + 1
$T[$x]=Substr($s,$)+Left($s,$-1)
next
do
$d=$d mod len($b) + 1
$=instr($s,substr($b,$d,1))
until $
$=$T[$]

$L=iif($c,substr($s,instr($,$L),1),substr($,$p,1))
endif
$r=$r+$L
next

$Vigenere = $r
EndFunction



My Tables:
Code:

0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz

0 23456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz01
1 3456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz012
2 456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123
3 56789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz01234
4 6789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz012345
5 789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456
6 89ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz01234567
7 9ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz012345678
8 ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789
9 YXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789Z
Z XWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZY
Y WVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYX
X VUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXW
W UTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWV
V TSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVU
U SRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUT
T RQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTS
S QPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSR
R PONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQ
Q ONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQP
P NMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPO
O MLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPON
N LKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONM
M KJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONML
L JIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLK
K IHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJ
J HGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJI
I GFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIH
H FEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHG
G EDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGF
F DCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFE
E CBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFED
D BAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDC
C Aabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCB
B abcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBA
A bcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAa
a cdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAab
b defghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabc
c efghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcd
d fghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcde
e ghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdef
f hijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefg
g ijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefgh
h jklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghi
i klmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghij
j lmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijk
k mnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijkl
l nopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklm
m opqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmn
n pqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmno
o qrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnop
p rstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopq
q stuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqr
r tuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrs
s uvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrst
t vwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstu
u wxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuv
v xyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvw
w yz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwx
x z0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxy
y 0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz
z 123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0


0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz

0 456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123
1 56789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz01234
2 6789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz012345
3 789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456
4 89ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz01234567
5 9ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz012345678
6 ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789
7 YXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789Z
8 XWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZY
9 WVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYX
Z VUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXW
Y UTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWV
X TSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVU
W SRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUT
V RQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTS
U QPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSR
T PONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQ
S ONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQP
R NMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPO
Q MLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPON
P LKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONM
O KJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONML
N JIHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLK
M IHGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJ
L HGFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJI
K GFEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIH
J FEDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHG
I EDCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGF
H DCBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFE
G CBAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFED
F BAabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDC
E Aabcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCB
D abcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBA
C bcdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAa
B cdefghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAab
A defghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabc
a efghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcd
b fghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcde
c ghijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdef
d hijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefg
e ijklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefgh
f jklmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghi
g klmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghij
h lmnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijk
i mnopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijkl
j nopqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklm
k opqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmn
l pqrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmno
m qrstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnop
n rstuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopq
o stuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqr
p tuvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrs
q uvwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrst
r vwxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstu
s wxyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuv
t xyz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvw
u yz0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwx
v z0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxy
w 0123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz
x 123456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz0
y 23456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz01
z 3456789ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz012


and so on...
_________________________
Home page: http://www.kixhelp.com/hb/

Top
#124250 - 2004-08-01 05:03 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
k, my 388 with the wrong table (0-9,A-Z,z-a) and added shift instead of subtract comes here:

function vigenere($t,$a,optional $_)
dim $,$w,$p,$k,$l,$z
for $=1 to 256
if $>47&$<58|($>64&$<91)|($>96 & $<123 & $t+$a<>ucase($t+$a))
$l=$l+chr($)
else
$a=join(split($a,chr($)),'')
endif
next
for $k=1 to len($t)
$z=$z+$a
$=substr($t,$k,1)
$w= ($=' ') +$w-$w*instr('!.?',$)
$p=instr($l,$)
if $p
$=len($l)
$=substr($l,1+($+($p-1+(1-2*$_)*($w+instr($l,substr($z,$k,1)))) mod $) mod $,1)
endif
$vigenere=$vigenere+$

next
endfunction


the correct code has to wait.
I messed something up in it and have no time to fix now.


Edited by Lonkero (2004-08-01 05:16 PM)
_________________________
!

download KiXnet

Top
#124251 - 2004-08-01 05:55 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
hover your mouse over the black box below.

_________________________
!

download KiXnet

Top
#124252 - 2004-08-01 06:28 PM Re: KiXgolf: Vigenere Cipher - Public coding
maciep Offline
Korg Regular
*****

Registered: 2002-06-14
Posts: 947
Loc: Pittsburgh
Here's mine. The table and shifting should be right.

Code:

function vigenere($t,$k,optional $d)
dim $j,$r,$,$p,$o,$m,$y
for $j = 65 to 90
$ = chr($j)+$+chr($j+32)
next
$p = "0123456789"+$
$m = 62 - (ucase($t+$k)=$t+$k)*26
for $j = 1 to len($t)
do
$ = left($k,1)
$k = substr($k,2)+$
$ = instr($p,$)
until $
$y = substr($t,$j,1)
if instr(".!? ",$y)
$o = ($y=" ")*($o+1)
endif
$r = instr($p,$y)
$vigenere = $vigenere + iif($r,substr($p, (iif($d,$m-$,$)+$r+o-1) mod $m+1,1),$y)
next
endfunction


_________________________
Eric

Top
#124253 - 2004-08-01 07:19 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
oh, then this works too:
KiXGolf Score = 364
Code:
 function vigenere($t,$k,optional $d)

dim $j,$r,$,$p,$o,$m,$y
for $j = 65 to 90
$ = chr($j)+$+chr($j+32)
next
$p = "0123456789"+$
$m = 62 - (ucase($t+$k)=$t+$k)*26
for $j = 1 to len($t)
do
$ = left($k,1)
$k = substr($k,2)+$
$ = instr($p,$)
until $
$y = substr($t,$j,1)
$o = $o+($y=" ")-$o*instr(".!? ",$y)
$r = instr($p,$y)
$vigenere = $vigenere + iif($r,substr($p, (iif($d,$m-$,$)+$r+o-1) mod $m+1,1),$y)
next
endfunction


tester says 7 right though...


Edited by Lonkero (2004-08-01 07:59 PM)
_________________________
!

download KiXnet

Top
#124254 - 2004-08-01 07:35 PM Re: KiXgolf: Vigenere Cipher - Public coding
maciep Offline
Korg Regular
*****

Registered: 2002-06-14
Posts: 947
Loc: Pittsburgh
actually that won't work because you are setting the offset to 0 for every alphanumeric character, since instr(".!? ",$y) equals 0 in that situation
_________________________
Eric

Top
#124255 - 2004-08-01 08:00 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
ja, sorry.
fixed, it's still 364
_________________________
!

download KiXnet

Top
#124256 - 2004-08-01 08:18 PM Re: KiXgolf: Vigenere Cipher - Public coding
maciep Offline
Korg Regular
*****

Registered: 2002-06-14
Posts: 947
Loc: Pittsburgh
Sorry, but it still isn't right. The problem is that instr doesn't return 0 or 1, it returns the position in the string (which i know you know). So if $y=" ", then instr(".!? ",$y) and $o=$o+1-4*$o.

I hope you can condense that part of the script though, i stared at it for quite a while without shedding a character.
_________________________
Eric

Top
#124257 - 2004-08-01 08:20 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
hey, that's the reason why my new code returned something weird!
_________________________
!

download KiXnet

Top
#124258 - 2004-08-01 08:22 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
k, what about:
$o = $o+($y=" ")-$o*(0<instr('!.?',$y))

it gives 368.
_________________________
!

download KiXnet

Top
#124259 - 2004-08-01 08:30 PM Re: KiXgolf: Vigenere Cipher - Public coding
Howard Bullock Offline
KiX Supporter
*****

Registered: 2000-09-15
Posts: 5809
Loc: Harrisburg, PA USA
Are we three the only ones that even gave this shot?
_________________________
Home page: http://www.kixhelp.com/hb/

Top
#124260 - 2004-08-01 08:34 PM Re: KiXgolf: Vigenere Cipher - Public coding
maciep Offline
Korg Regular
*****

Registered: 2002-06-14
Posts: 947
Loc: Pittsburgh
Yep, i think that works. Nice.
_________________________
Eric

Top
#124261 - 2004-08-01 08:38 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
so, coming back with 365
Code:
 function vigenere($t,$k,optional $d)
dim $j,$r,$,$p,$o,$m,$y
for $j = 65 to 90
$ = chr($j)+$+chr($j+32)
next
$p = "0123456789"+$
$m = 62 - (ucase($t+$k)=$t+$k)*26
for $j = 1 to len($t)
do
$ = left($k,1)
$k = substr($k,2)+$
$ = instr($p,$)
until $
$y = substr($t,$j,1)
$o = $o+($y=" ") -$o*(0<instr('!.?',$y))
$r = instr($p,$y)
$vigenere = $vigenere+iif($r,substr($p, (iif($d,$m-$,$)+$r+o-1) mod $m+1,1),$y)
next
endfunction

_________________________
!

download KiXnet

Top
#124262 - 2004-08-01 08:46 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
hoby, afaik, richard was on it but failed to have time.
bryce gave up couple of days ago.
_________________________
!

download KiXnet

Top
#124263 - 2004-08-02 03:16 AM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
you boys not cutting any?
there should be place for 20 more...
_________________________
!

download KiXnet

Top
#124264 - 2004-08-02 04:42 AM Re: KiXgolf: Vigenere Cipher - Public coding
Howard Bullock Offline
KiX Supporter
*****

Registered: 2000-09-15
Posts: 5809
Loc: Harrisburg, PA USA
Jens, can I get a ruling on my methodology of shifting the entire table 2 characters for each character of the input string? Does this offer the required additional complexity which you originally envisioned? Is it acceptable?

Note: the encrypted text does not match that you manually calculated in the test script. For this test only the "Cipher" text in the test script was changed to an empty string as it was in the original test script.

If yes then:
Code:
Function Vigenere($a,$b, optional $c)

Dim $L,$p,$,$s,$z

for $=65 to 90
$s = chr($) + $s + chr($+32)
next
$s = "0123456789" + $s

for $z=1 to len($a)
$L=substr($a,$z,1)
$p=instr($s,$L)
if $p
do
$ = left($b,1)
$b = substr($b,2)+$
$ = instr($s,$)
until $

$=($+2*$z) mod 62 + 1
$=Substr($s,$)+Left($s,$-1)

$L=iif($c,substr($s,instr($,$L),1),substr($,$p,1))
endif
$Vigenere=$Vigenere+$L
next
EndFunction


Code:

KiXtart
KiXtart Version = 4.22
KiXforms Version =
KiXGolf Script = kixgolf_vigenere.kix

Computer
OS = Windows 2000 Professional
CPU = Intel Pentium III
Speed = 848 MHz
Memory = 512 MB

KiXGolf Scoring Engine
Scoring Engine = 3.0.3

KiXtart Golf Score
Tournament = KiXtart Golf: Vigenere Cipher
Valid Cipher Ops = 11 (100%)
Processing Start = 2004/08/01 22:21:55.034
Processing End = 2004/08/01 22:21:55.154
Duration = 0000/00/00 00:00:00.119
KiXGolf Score = 344

Thank you for participating in KiXtart Golf!



Outputs:

rxE5rzW
KIXGOLF

rxE5rzW 7WlO7UG
KIXGOLF KIXGOLF

rxE5rzW. 9UnM9SE
KIXGOLF. KIXGOLF

rxE5rzW p1rz9bUCS7
KIXGOLF TOURNAMENT

~!#$%^&*()-+?
~!#$%^&*()-+?

rEEEnjA FWQRdlGrZU
KiXgolf Tournament

pBMEqE lb 8pwow2ex SvL 2FNW Mb lo0J EiB zfsji80t ZWA TSPJ7C SYfDLgkUk ne m uZmrx R3 6Nv JUHFGC, dAr tg2Cpq s0 W6W 5QC Z LeqDK.
Blaise de Vigenere was born in 1523 and received the normal education of a noble of his period, ven though he was not a noble.

qdw VojLxABk 3kWI4M 6mF5l XhSi5jsCEkbN iY D wF837t6ZlTB XK i MDCHac IfzC7 V6ZwkUrc NIWM e DDnHkB6
The Vigenere cipher basic construction is a combination of a Caesar shift combined with a keyword

eimquy26Z4
1234567890

eimquy26Z4
abcdefghij

3ECpropc!
Finished!
_________________________
Home page: http://www.kixhelp.com/hb/

Top
#124265 - 2004-08-02 12:46 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
maciep, sorry but your code is the loosest
and yet, the finest.

Code:
function vigenere($t,$k,optional $d)
dim $j,$r,$,$p,$o,$y
for $j = 65 to 90
$ = chr($j)+$+chr($j+32)
next
$p = "0123456789"+$
for $j = 1 to len($t)
do
$ = left($k,1)
$k = substr($k,2)+$
$y = instr($p,$)
until $y
$ = substr($t,$j,1)
$o = $o+($=" ") -$o*(0<instr('!.?',$))
$r = instr($p,$)
if $r
$ = 62 - (ucase($t+$k)=$t+$k)*26
$=substr($p, (iif($d,$-$y,$y)+$r+o-1) mod $+1,1)
endif
$vigenere = $vigenere + $
next
endfunction



makes it 360.
_________________________
!

download KiXnet

Top
#124266 - 2004-08-02 01:46 PM Re: KiXgolf: Vigenere Cipher - Public coding
maciep Offline
Korg Regular
*****

Registered: 2002-06-14
Posts: 947
Loc: Pittsburgh
no apology necessary. i know i'm sick of staring at it, so it's your turn, rip it apart.
_________________________
Eric

Top
#124267 - 2004-08-02 01:54 PM Re: KiXgolf: Vigenere Cipher - Public coding
Lonkero Administrator Offline
KiX Master Guru
*****

Registered: 2001-06-05
Posts: 22346
Loc: OK
well.
me done for now.
I quess.
don't see anything too obvious...

and I have trouble understanding your last line.
tried to read it quickly and said hey that's wrong.
so left it alone.
just remember that my line was longer even though it had no iif's in it.


Edited by Lonkero (2004-08-02 01:55 PM)
_________________________
!

download KiXnet

Top
Page 1 of 3 123>


Moderator:  Arend_, Allen, Jochen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Mart 
Hop to:
Shout Box

Who's Online
1 registered (Allen) and 1198 anonymous users online.
Newest Members
M_Moore, BeeEm, min_seow, Audio, Hoschi
17883 Registered Users

Generated in 0.067 seconds in which 0.014 seconds were spent on a total of 12 queries. Zlib compression enabled.

Search the board with:
superb Board Search
or try with google:
Google
Web kixtart.org