Difference between revisions of "Notes"
From Ghoulwiki
					
										
					
					| Ghoulsblade (talk | contribs)  (→misc) | Ghoulsblade (talk | contribs)  | ||
| Line 20: | Line 20: | ||
| * http://happypenguin.org/show?Project%20LRNJ%3A%20Slime%20Forest  (japanese learning game) | * http://happypenguin.org/show?Project%20LRNJ%3A%20Slime%20Forest  (japanese learning game) | ||
| * http://happypenguin.org/show?BitRock%20InstallBuilder (bitrock crossplatform installer builder) | * http://happypenguin.org/show?BitRock%20InstallBuilder (bitrock crossplatform installer builder) | ||
| + | |||
| + | === print === | ||
| + | |||
| + | <pre></nowiki> | ||
| + | <?php | ||
| + | require("cryptutils.php"); | ||
| + | |||
| + | // Nr17 | ||
| + | |||
| + | /// returns true if bit is set | ||
| + | /// (1 << n) == 2^n   (shiftleft) | ||
| + | function TestBit ($mask,$bitnum) { return ($mask & (1 << $bitnum)) != 0; } | ||
| + | |||
| + | /// condition ? value_if_true : value_if_false | ||
| + | function F($x) { | ||
| + | 	$mask = $x*($x+1); | ||
| + | 	$res = 0; | ||
| + | 	for ($i=0;$i<=4;++$i) $res += TestBit($mask,$i+1) ? (1 << $i) : 0; | ||
| + | 	return $res; | ||
| + | } | ||
| + | |||
| + | /// $C is the subset that is being tested,  $C[$i] is x_i of the subset | ||
| + | function SubsetIsCycle ($C) { | ||
| + | 	$r = count($C); | ||
| + | 	if (F($C[$r-1]) != $C[0]) return false; | ||
| + | 	for ($i=1;$i<$r;++$i) if (F($C[$i-1]) != $C[$i]) return false; | ||
| + | 	return true; | ||
| + | } | ||
| + | |||
| + | function AsBitString10 ($x) { return strrev(sprintf("%010b",$x)); } | ||
| + | function AsBitString5 ($x) { return strrev(sprintf("%05b",$x)); } | ||
| + | |||
| + | /* | ||
| + | bruteforce | ||
| + | */ | ||
| + | |||
| + | $F_x_arr = array(); | ||
| + | for ($x=0;$x<32;++$x) { | ||
| + | 	$bitstring = AsBitString10($x*($x+1)); | ||
| + | |||
| + | 	// F(x) | ||
| + | 	$tmp = 0; | ||
| + | 	for ($i=0;$i<=4;++$i) $tmp += intval($bitstring{$i+2})*(1<<$i); | ||
| + | 	$F_x_arr[$x] = $tmp; | ||
| + | |||
| + | 	//echo "x=$x  x*(x-1)=".$bitstring." $tmp\n"; | ||
| + | } | ||
| + | |||
| + | function GenerateChain ($x_0) { | ||
| + | 	global $F_x_arr; | ||
| + | 	$chain = array( 0=>$x_0 ); | ||
| + | 	while (1) { | ||
| + | 		$Fx = $F_x_arr[$chain[count($chain)-1]]; | ||
| + | 		if (in_array($Fx,$chain)) break; | ||
| + | 		$chain[] = $Fx; | ||
| + | 	} | ||
| + | 	return $chain; | ||
| + | } | ||
| + | |||
| + | //echo implode(",",$F_x_arr); | ||
| + | |||
| + | $checklist = array(); | ||
| + | $cycle = array(); | ||
| + | $domain = array(); | ||
| + | |||
| + | for ($x=0;$x<32;++$x) { | ||
| + | 	$chain = GenerateChain($x); | ||
| + | 	//echo "$x : ".implode(",",$chain)."\n"; | ||
| + | |||
| + | 	//$last = $chain[0]; | ||
| + | 	$last = $chain[count($chain)-1]; | ||
| + | 	$key = array_shift(array_keys($chain,$last)); | ||
| + | |||
| + | 	// domains | ||
| + | 	for ($i=0;$i<count($chain);++$i)  | ||
| + | 		if (!in_array($chain[$i],$checklist)) | ||
| + | 			$domain[$last][] = $chain[$i]; | ||
| + | |||
| + | 	// cycles | ||
| + | 	for ($i=$key;$i<count($chain);++$i)  | ||
| + | 		if (!in_array($chain[$i],$checklist)) | ||
| + | 			$cycle[$last][] = $chain[$i]; | ||
| + | |||
| + | 	// checklist | ||
| + | 	for ($i=0;$i<count($chain);++$i)  | ||
| + | 		if (!in_array($chain[$i],$checklist)) | ||
| + | 			$checklist[] = $chain[$i]; | ||
| + | } | ||
| + | |||
| + | foreach ($cycle as $i=>$vals) { | ||
| + | 	sort($domain[$i]); | ||
| + | 	$chain = GenerateChain($i); | ||
| + | 	echo "C = {".implode(",",$chain)."}\n"; | ||
| + | 	echo "A(C) = {".implode(",",$domain[$i])."}\n"; | ||
| + | 	echo "\n"; | ||
| + | } | ||
| + | |||
| + | |||
| + | /* | ||
| + | Nr.17 a) output : | ||
| + | |||
| + | C = {0} | ||
| + | A(C) = {0,1,2,6,10,11,15,23,25,26,27,28,29} | ||
| + | |||
| + | C = {3} | ||
| + | A(C) = {3} | ||
| + | |||
| + | C = {24,22,30,8,18,21,19,31} | ||
| + | A(C) = {4,5,7,8,9,12,14,16,17,18,19,20,21,22,24,30,31} | ||
| + | |||
| + | C = {13} | ||
| + | A(C) = {13} | ||
| + | */ | ||
| + | |||
| + | ?> | ||
| + | </nowiki></pre> | ||
Revision as of 11:47, 23 May 2007
links to look at :
- http://www.alexa.com/site/ds/top_500 ( global website ranking based on traffic?)
- http://www.studivz.net/ (german student net)
- http://flickr.com/ (photos)
Contents
social net
- http://www.orkut.com/About.aspx?page=keep
- http://myspace.com/
- http://digg.com/ (technology news)
screencasting
- http://en.wikipedia.org/wiki/Xvidcap
- http://www.freecharity.org.uk/2007/04/12/the-secret-to-screencasting-with-ubuntu-and-free-software/
misc
- http://happypenguin.org/show?Project%20LRNJ%3A%20Slime%20Forest (japanese learning game)
- http://happypenguin.org/show?BitRock%20InstallBuilder (bitrock crossplatform installer builder)
</nowiki>
<?php
require("cryptutils.php");
// Nr17
/// returns true if bit is set
/// (1 << n) == 2^n   (shiftleft)
function TestBit ($mask,$bitnum) { return ($mask & (1 << $bitnum)) != 0; }
/// condition ? value_if_true : value_if_false
function F($x) {
	$mask = $x*($x+1);
	$res = 0;
	for ($i=0;$i<=4;++$i) $res += TestBit($mask,$i+1) ? (1 << $i) : 0;
	return $res;
}
/// $C is the subset that is being tested,  $C[$i] is x_i of the subset
function SubsetIsCycle ($C) {
	$r = count($C);
	if (F($C[$r-1]) != $C[0]) return false;
	for ($i=1;$i<$r;++$i) if (F($C[$i-1]) != $C[$i]) return false;
	return true;
}
function AsBitString10 ($x) { return strrev(sprintf("%010b",$x)); }
function AsBitString5 ($x) { return strrev(sprintf("%05b",$x)); }
/*
bruteforce
*/
$F_x_arr = array();
for ($x=0;$x<32;++$x) {
	$bitstring = AsBitString10($x*($x+1));
	
	// F(x)
	$tmp = 0;
	for ($i=0;$i<=4;++$i) $tmp += intval($bitstring{$i+2})*(1<<$i);
	$F_x_arr[$x] = $tmp;
	
	//echo "x=$x  x*(x-1)=".$bitstring." $tmp\n";
}
function GenerateChain ($x_0) {
	global $F_x_arr;
	$chain = array( 0=>$x_0 );
	while (1) {
		$Fx = $F_x_arr[$chain[count($chain)-1]];
		if (in_array($Fx,$chain)) break;
		$chain[] = $Fx;
	}
	return $chain;
}
//echo implode(",",$F_x_arr);
$checklist = array();
$cycle = array();
$domain = array();
for ($x=0;$x<32;++$x) {
	$chain = GenerateChain($x);
	//echo "$x : ".implode(",",$chain)."\n";
	
	//$last = $chain[0];
	$last = $chain[count($chain)-1];
	$key = array_shift(array_keys($chain,$last));
	
	// domains
	for ($i=0;$i<count($chain);++$i) 
		if (!in_array($chain[$i],$checklist))
			$domain[$last][] = $chain[$i];
	
	// cycles
	for ($i=$key;$i<count($chain);++$i) 
		if (!in_array($chain[$i],$checklist))
			$cycle[$last][] = $chain[$i];
	
	// checklist
	for ($i=0;$i<count($chain);++$i) 
		if (!in_array($chain[$i],$checklist))
			$checklist[] = $chain[$i];
}
foreach ($cycle as $i=>$vals) {
	sort($domain[$i]);
	$chain = GenerateChain($i);
	echo "C = {".implode(",",$chain)."}\n";
	echo "A(C) = {".implode(",",$domain[$i])."}\n";
	echo "\n";
}
		
/*
Nr.17 a) output :
C = {0}
A(C) = {0,1,2,6,10,11,15,23,25,26,27,28,29}
C = {3}
A(C) = {3}
C = {24,22,30,8,18,21,19,31}
A(C) = {4,5,7,8,9,12,14,16,17,18,19,20,21,22,24,30,31}
C = {13}
A(C) = {13}
*/
?>
</nowiki>

