Skip to content

Commit 1eb2322

Browse files
committed
PHP and Javascript solutions to hard challenge #85 - Find Min (Facebook Hacker Cup 2013 Hackathon)
1 parent e5977b9 commit 1eb2322

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

hard/85 - Find Min/85.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// https://www.codeeval.com/open_challenges/85/
2+
var fs = require("fs");
3+
fs.readFileSync(process.argv[2]).toString().split('\n').forEach(function (line) {
4+
line = line.trim();
5+
if( line !== '' ){
6+
var tmp = line.split(',');
7+
var n = Number(tmp[0]);
8+
var k = Number(tmp[1]);
9+
var a = Number(tmp[2]);
10+
var b = Number(tmp[3]);
11+
var c = Number(tmp[4]);
12+
var r = Number(tmp[5]);
13+
14+
var i = 0;
15+
var m = [];
16+
m[0] = a;
17+
for( i = 1; i < k ; i++){
18+
m.push( ( b * m[i-1] + c ) % r );
19+
}
20+
21+
for( i = k; i < n ; i++){
22+
var sub = m.slice( i-k , i );
23+
var min = 0;
24+
while( -1 != sub.indexOf(min) ){
25+
min++;
26+
}
27+
m.push( min );
28+
}//
29+
30+
console.log(m[n-1]);
31+
}
32+
});

hard/85 - Find Min/85.php

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
header('Content-Type: text/plain; charset=utf-8');
3+
4+
// https://www.codeeval.com/open_challenges/85/
5+
6+
if( isset($_GET['f_i_l_e']) && $_GET['f_i_l_e'] ) $argv[1] = $_GET['f_i_l_e'];
7+
8+
if( isset($argv[1]) && $argv[1] ){
9+
$filename = $argv[1];
10+
if( file_exists($filename) ){
11+
if( is_readable($filename) ){
12+
$fp = fopen($filename, 'r');
13+
if( $fp ){
14+
while ( $fp && !feof( $fp ) ) {
15+
$line = trim(fgets($fp));
16+
if( $line ){
17+
// echo $line."\n";
18+
list($n,$k,$a,$b,$c,$r) = explode(',', $line);
19+
$m = array();
20+
$m[0] = $a;
21+
for($i=1; $i < $k ; $i++){
22+
$m[] = ($b * $m[$i-1] + $c) % $r;
23+
}
24+
25+
for( $i = $k; $i < $n ; $i++){
26+
27+
$sub = array_slice($m, $i-$k, $k);
28+
$sub = array_flip($sub);
29+
30+
$min = 0;
31+
// while( in_array($min,$sub) ){
32+
while( isset($sub[$min]) ){
33+
$min++;
34+
}
35+
// echo 'min:'.$min."\n";
36+
$m[] = $min;
37+
38+
}//
39+
40+
echo $m[$n-1] . "\n";
41+
}
42+
43+
}//
44+
fclose( $fp );
45+
}
46+
else{
47+
echo '!fp'."\n";
48+
}
49+
}
50+
else{
51+
echo '!readable'."\n";
52+
}
53+
}
54+
else{
55+
echo '!file_exists'."\n";
56+
}
57+
}
58+
else{
59+
echo '!argv[1]'."\n";
60+
}
61+
62+
exit(0);
63+
64+
?>

hard/85 - Find Min/test.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
78,51,3,5,5,51230
2+
186,75,68,16,539,312
3+
137,135,48,17,461,512
4+
98,22,6,30,524,100
5+
46,18,7,11,9,46

0 commit comments

Comments
 (0)