Version: 1.0
Type: Function
Category: Algorithms
License: BSD License
Description: Convert strings into punch cards
<?
//
// BCD Convertor v1.0 by Edwin Groothuis (edwin@mavetju.org)
//
// $Id: php-bcd.php,v 1.1 2001/09/04 12:01:19 mavetju Exp $
//
// If you didn't get this file via http://www.mavetju.org, please
// check for the availability of newer versions.
//
// See LICENSE for distribution issues. If this file isn't in
// the distribution, please inform me about it.
//
// Feel free to use this yourself.
//
//
// Usage:
//
// to_bcd(string)
//
$holes=array(
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x206, 0x20a, 0x042, 0x442, 0x222, 0x800, 0x406,
0x812, 0x412, 0x422, 0xa00, 0x242, 0x400, 0x842, 0x300,
0x200, 0x100, 0x080, 0x040, 0x020, 0x010, 0x008, 0x004,
0x002, 0x001, 0x012, 0x40a, 0x80a, 0x212, 0x00a, 0x006,
0x022, 0x900, 0x880, 0x840, 0x820, 0x810, 0x808, 0x804,
0x802, 0x801, 0x500, 0x480, 0x440, 0x420, 0x410, 0x408,
0x404, 0x402, 0x401, 0x280, 0x240, 0x220, 0x210, 0x208,
0x204, 0x202, 0x201, 0x082, 0x822, 0x600, 0x282, 0x30f,
0x900, 0x880, 0x840, 0x820, 0x810, 0x808, 0x804, 0x802,
0x801, 0x500, 0x480, 0x440, 0x420, 0x410, 0x408, 0x404,
0x402, 0x401, 0x280, 0x240, 0x220, 0x210, 0x208, 0x204,
0x202, 0x201, 0x082, 0x806, 0x822, 0x600, 0x282, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x206, 0x20a, 0x042, 0x442, 0x222, 0x800, 0x406, 0x812,
0x412, 0x422, 0xa00, 0x242, 0x400, 0x842, 0x300, 0x200,
0x100, 0x080, 0x040, 0x020, 0x010, 0x008, 0x004, 0x002,
0x001, 0x012, 0x40a, 0x80a, 0x212, 0x00a, 0x006, 0x022,
0x900, 0x880, 0x840, 0x820, 0x810, 0x808, 0x804, 0x802,
0x801, 0x500, 0x480, 0x440, 0x420, 0x410, 0x408, 0x404,
0x402, 0x401, 0x280, 0x240, 0x220, 0x210, 0x208, 0x204,
0x202, 0x201, 0x082, 0x806, 0x822, 0x600, 0x282, 0x30f,
0x900, 0x880, 0x840, 0x820, 0x810, 0x808, 0x804, 0x802,
0x801, 0x500, 0x480, 0x440, 0x420, 0x410, 0x408, 0x404,
0x402, 0x401, 0x280, 0x240, 0x220, 0x210, 0x208, 0x204,
0x202, 0x201, 0x082, 0x806, 0x822, 0x600, 0x282, 0x0
);
function to_bcd($string) {
global $holes;
$COLUMNS=48;
$string=strtoupper($string);
$rowchars="...123456789";
$ret= " ________________________________________________\n";
$ret.=sprintf("/%-48s|\n",$string);
for ($row=0;$row<12;$row++) {
$ret.="|";
for ($i=0;$i<strlen($string);$i++) {
if (($holes[ord($string[$i])] & 1<<(11-$row))!=0)
$ret.=" ";
else
$ret.=$rowchars[$row];
}
while ($i++ < $COLUMNS)
$ret.=$rowchars[$row];
$ret.="|\n";
}
$ret.="|________________________________________________|\n";
return $ret;
}
if ($text) {
echo "<pre>",to_bcd($text),"\n";
}
?>
<form method="post" action="<? echo $PHP_SELF; ?>">
<input type="text" name="text" value="<? echo $text; ?>">
</form>