Skip to content

Commit 3563319

Browse files
committed
PHP and Javascript solutions to moderate challenges #33 - Double squares, #54 - Cash register, and #135 Word chain
1 parent 2569223 commit 3563319

File tree

12 files changed

+416
-0
lines changed

12 files changed

+416
-0
lines changed

moderate/135 - Word chain/135.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// https://www.codeeval.com/open_challenges/135/
2+
3+
4+
function word_chain(nodes, key, used , max ){
5+
if( 'undefined' !== typeof(nodes[key]) ){
6+
var new_max = max;
7+
for( var i=0, cnt = nodes[key].length ; i < cnt ; i++){
8+
var word = nodes[key][i];
9+
if( 'undefined' === typeof(used[word]) ){
10+
var next_used = {};
11+
for(var k in used){
12+
next_used[k] = true;
13+
}
14+
next_used[ word ] = true;
15+
var m = word_chain( nodes, word.substr(-1,1) , next_used, max + 1);
16+
if( m > new_max ){
17+
new_max = m;
18+
}
19+
}
20+
}
21+
max = new_max;
22+
}
23+
return max;
24+
}
25+
26+
var fs = require("fs");
27+
fs.readFileSync(process.argv[2]).toString().split('\n').forEach(function (line) {
28+
line = line.trim();
29+
if( line !== '' ){
30+
var max = 0;
31+
var nodes = {};
32+
var words = line.split(',');
33+
var len = words.length;
34+
var i = len;
35+
while(i--){
36+
var word = words[i];
37+
if( 'undefined' === typeof(nodes[word[0]]) ){
38+
nodes[word[0]] = [];
39+
}
40+
nodes[ word[0] ].push( word );
41+
}
42+
43+
for(var k in nodes){
44+
var result = word_chain( nodes, k , {}, 0);
45+
if( result > max ){
46+
max = result;
47+
}
48+
}
49+
console.log( max > 1 ? max : 'None' );
50+
}
51+
});

moderate/135 - Word chain/135.php

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
<?php
2+
header('Content-Type: text/plain; charset=utf-8');
3+
4+
// https://www.codeeval.com/open_challenges/135/
5+
6+
function word_chain($nodes, $key, $used = array(), $max = 0 ){
7+
// echo $key.' '.var_export($used, true) . "\n";
8+
if( isset($nodes[$key]) ){
9+
$new_max = $max;
10+
for($i=0, $cnt = count($nodes[$key]) ; $i < $cnt ; $i++){
11+
$word = $nodes[$key][$i];
12+
if( !isset($used[$word]) ){
13+
$next_used = $used;
14+
$next_used[$word] = true;
15+
$m = word_chain( $nodes, substr($word,-1,1), $next_used, $max + 1);
16+
if( $m > $new_max ){
17+
$new_max = $m;
18+
}
19+
}
20+
}
21+
$max = $new_max;
22+
}
23+
return $max;
24+
}
25+
26+
if( isset($_GET['f_i_l_e']) && $_GET['f_i_l_e'] ) $argv[1] = $_GET['f_i_l_e'];
27+
28+
if( isset($argv[1]) && $argv[1] ){
29+
$filename = $argv[1];
30+
if( file_exists($filename) ){
31+
if( is_readable($filename) ){
32+
$fp = fopen($filename, 'r');
33+
if( $fp ){
34+
while ( $fp && !feof( $fp ) ) {
35+
$line = trim(fgets($fp));
36+
if( $line ){
37+
// echo $line."\n";
38+
$max = 0;
39+
40+
$nodes = array();
41+
42+
$words = explode(',', $line);
43+
$len = count($words);
44+
$i = $len;
45+
while($i--){
46+
$word = $words[$i];
47+
if( !isset($nodes[$word[0]]) ){
48+
$nodes[$word[0]] = array();
49+
}
50+
$nodes[ $word[0] ][] = $word;
51+
}
52+
53+
// print_r($nodes);
54+
55+
$keys = array_keys($nodes);
56+
$i = count($keys);
57+
while($i--){
58+
$result = word_chain( $nodes, $keys[$i] );
59+
if( $result > $max ){
60+
$max = $result;
61+
}
62+
}
63+
// echo $max."\n";
64+
echo /*$line.': '.*/( ( $max > 1 ) ? $max : 'None' ). "\n";
65+
}
66+
67+
}//
68+
fclose( $fp );
69+
}
70+
else{
71+
echo '!fp'."\n";
72+
}
73+
}
74+
else{
75+
echo '!readable'."\n";
76+
}
77+
}
78+
else{
79+
echo '!file_exists'."\n";
80+
}
81+
}
82+
else{
83+
echo '!argv[1]'."\n";
84+
}
85+
86+
exit(0);
87+
88+
?>

moderate/135 - Word chain/test.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
soup,sugar,peas,rice
2+
ljhqi,nrtxgiu,jdtphez,wosqm
3+
cjz,tojiv,sgxf,awonm,fcv
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
bqtvixz,nljywm,jftap,utyx,trgcxm,lmjbai,mgqpls,rktm,yka,fea,fem,mwkia,impbyot,zdrex,dezuxm,lbyjmkf,vkz,zykmdo,cjzioe,xjqdm,xltwhrn,ludqfs
2+
szf,doyfvw,lhgoqx,gkpdh,ozfgple,mqfpvr,ajw,zecnpuv,xmbkvg,yvipkc,disectu,dgk,nix,yrwc,pcnfjr,agxykop,jkc,frnl,laqpecr,wkhf,xncq,itsvk,rufzgnt,ojafd,mugbcd,ausrldh,cpysfw,shkemf
3+
qlwzj,vkrwuq,bukw,ejsaxmi,nmgu,zhlu,dvaqjeu,lyg,uor,hlynqv,nejshup,cekva,fbtpxyg,jlbve,iqlzfc,uhj,ohvmc,wlayn,udxg,donlw,nicps,mxdutqh
4+
mafsk,qznwfx,wxymvaz,dnckwz,gpre,ulkofjd,twc,wmy,nqytrbc,ump,epcizh,smu,tob,yam,yhpvd,uetr,vzhapf,fxkhbn,wpvdx,kqxtbda,vln,osimeup,hdoz,drxs,thvdzjq,oknps,rjh,baolg,sjpyw,qxpbfya
5+
uzk,hpit,flunzs,hksj,qwfsjb,zxfin,wbaij,rgocq,aygsk,agpbyxd,xqowi,dqhso,ykzi,alhbvc,ymaufn,smdwxf,nthwe,ijutc,hielfdr,ilhgmy,irxt,gel,uoajxbt,geoip,uhlt,tysa,jclxfut,bpzvdyr,zhl
6+
kecyx,vcfntzx,rqua,bskzq,sxhzly,gkdlo,jnx,xesur,xdfkyq,atvnim,zoq,wgubht,zwoxbf,gsbye,ynzfvbw,zqaes
7+
jlqrw,rfpc,dunex,ewo,ovw,eiscvkz,uzjhklb,yhxngik,njcueg,hvf,tpwxfek,hnu,mghut,sjcnzge,stz,plvt
8+
lohak,fhm,bsjx,dewig,dwcro,bvhk,gysonm,hgzun,vwp,agjf,ail,tuk,nxc,ixwbrp,puncid,ezf,lsqbd,yet
9+
ace,quzah,klc,ruej,yuer,sqdha,kun,lhs,rseaqdp,uqbvdt
10+
lhgixn,hvb,vbntz,ngwvcs,hpfvzt,zcdbiq,fvd,nhbdr,yjuvh,wye,rqcztam,nit,qajcy,zwnguhp,zyi,bpwvmy,vbwn,zjysfe
11+
nbmpjce,mni,odi,cmnwkrz,qru,rznpy,apsbu,fmhrs,zedx,xwmvzhc,msj,wikcf,jtd,vzp,quncpy,vcjyp,mzy,gwazist,nhjo,tqgdhz,wofgy,uazmgp,xnkr,fqk,iwfxcv,wfo,fjxtari,lquwict,isndz,eom,uljiofy,ujo,mybokj,ucim,qjhsbmc
12+
azhbe,hbiqmf,pvw,iuh,etpla,evsf,ptkzeu,ftzq,ymabz,fgbliwu,ayvizgt,vfwkim,ktxivf,bptze,zgs,ampjli,iwasjh,yunmwox,uqrznv,vuydt,pwtoea,emlsab,ori,tnmi,zgvbu,muxo,ctv,rzlyb,lwvce,amzjbn,zpnwgsi,wrouki,agnvixk,fhgnwe
13+
dqhebug,vidgbne,krlen,zahtr,aucmg,ebdvs,rjbfd,giawn,fdzgq,gaulxnr,grv,bujfhx,ndhlt,tjb,gpx,lwvrkqi,gqfvdyc,ivbnqdy,ozk,wulazf,epsvd,fakizyu,ehwtgb,rbcgh,skore,skvdrpu,nfh,olas,yuoi,abqd,btmn,pxgdkrl
14+
svklpbr,gvfdtje,kxlzmps,sjvkmnx,hlc,tiv,tofgzm,kwbdjxn,afku,woi,zdh,jba,dtrph,faqd,ngarevp,hvmdks
15+
yhbeum,xtni,sivzy,shramzp,nsbwg,ipronyw,jghqt,tkxwn,jpog,udqi,qlrkiy,bta,guv,vbh,qxua,eas,bvezq,abctoy,akfd
16+
nhlbet,tiys,ldb,xjwhaf,pod,jkexbvy,vlgktde,mfohqiu,zmoqn,iefqah,hezk,oys,nepio,vax,pbaod,wigmluc,aqyl,ubs,rla,uwbyo,ynmr,sbwuazv,prbqouh,brxk,rtypd,zlifsxj,drt,vshz,gfxhrw,bae,tyscbfk,fairu,dpl,mcpgja,qijw
17+
tipmsy,szf,ysrx,fnodkc,mbs,kupnif,ehz,ehylpo,iec,flyhsw,nghlvr,nkl,grvtfmp,brnixzw,tczbpux,yltdqhi,zxoirus,joptnek,dcixms,wqxa,zyvr,sjchg,cixwm,glt,vepsl
18+
goycw,gpkwaw,gtdpmxuyw,gvqfcslw,gptflxmrw,gpluw,gdlwtew,ghamijrfw,gdpyekw,giymxew,gjthdow,gnzpukw,gigdmhsw,gfclvsbw,gvscgmiw
19+
bts,nmgb,zkrseni,mdsug,tvi,fbpk,won,atzmys,ptmbiw,tma,bqvn,pueo,qcsag,rcb,erjx,uvkz,vkrm,gipetsn,uhtb,usbdaw,puiaslh,qpgyoa,xjmo,ghfkbv,rcsvzm,vmgisu,ilsut,ltdpw,twazpse,ofgqp
20+
qoep,zwjvr,nwa,jrduzp,kcbm,cbeiqh,lxgso,mxrc,zaybtmr,zmaqjvi,yoxdifl,zlruy,jhrfwlt,etvbuyp,xqozdy,uya,bueypw,zhkli,knojtl,hwr,ehyqr,ndhor,veyh,zbelfq,mjyea,rmhs,oqb
21+
roqk,tqg,fcnw,slryx,vmoj,uopagew,drot,yluifck,mkzpoae,jkbwes,lnz
22+
nhgaik,ldf,efhcuqn,lwvmp,qszet,bjlrva,gvd,uko,low,blwyhfz,tzdorg,ythmde,bcps,eknv,wsdjlp,why,zfrutg,ahei,dirpt,iqz,ltz,rbsy,dkthngp,hpxgo
23+
zmba,qylz,lubztg,oie,ytufcda,eopx,pnzi,vosydkh,xharb,ofyzj,uym,phqe
24+
hnyzxws,rfsn,vtjx,rcdq,gyoqz,sed,mhyxglu,lkmqo,lamvwj,eijv,rlnmuwz,yrj,rpzoge,dqx,lardm,fotkp,cyxe,bfyhgxm,fpixd,xiwpskm,yspzq,korh,xbedju,bhzd,rktdwgx,odaqbnx,yembzk,fwu,avwf
25+
czjodbw,ifd,qripxze,xgf,obrlx,ghaqs,vcsgp,sac,xfhln,noehq,cbkmd,dfpiwe,ulyzxsn,zqnardb,yzkxmcg,bzj
26+
buskq,dbxv,abtki,odxkwng,twnrdau,aqjgdbo,ogkazw,tvfz,eqxu,zny,lwf,tbkza
27+
xdki,usgpo,awytgfn,ubzhy,ctdvfn,vmozyl,qvkntfm,kdbr,bhqoge,voq,kvo,vedalyz,unhxpot,twxpuc,fkdcjr,kytm,njquzw,msfu
28+
sgxbhqr,dkbmy,znj,ojwthke,hpmn,zjioweq,nodyzef,gzqj,dptx,uxqre,qsmblz
29+
glk,rsvj,lmthry,kevf,wryap,lsmey,ezqflr,vhqy,hkn,vmrcun,yqks,xry,rgdat,tvmqb
30+
waug,tpsue,fdhc,kpir,ubhadl,wzymvtb,pyft,qgs,irh,aobgpy,ulzviqt,oyfqm,qzurxn,ipdq,pfekyq,yhfbik,zfcw,rqx,yzeur,lrx,qwcs,spzdl,cyndex,rwjz,jpdkfmi,fykreip,zmfan,ljz,bpv,axydi,miyapt,aqczu
31+
khx,ugthzm,joaq,owqxf,cxkjn,skcolg,wvflho,vznj,wmsg,lxedg,yvrxi,ryfi,vxcu,emfjux,gysbr,rohbfp,lre,sqgvonc,yvmkni,lqzkvcj,kyfb,fbgtcia,uwqlr,tpjcm,khux,ylhn,qasivbr,ety,pezxqw,vmfin,xhqo,eifruzh
32+
wioma,lmh,zlwyx,tcw,oqxwtbd,twqy,mignp,exjlih,nwculr,ywtho,ckf,klwtyp,zcmpvxj,bfrmwo,wzagim,nrpdbh
33+
jdpz,jnz,uths,ikwxolv,hrnegct,njzhfgw,usb,ozrf,ceyz,ofsb,wmj,zxr,smh,afq,rwoksdy,ncp,ufb,ecyd,sxi,sqo,koqyax,xzcdtp,bild,gtfuo,kryfsju,opmu
34+
nxcohst,chkrms,tweao,wtvudms,jiw,duorhvt,yvkxahd,mrf,nlaf,was,mvn
35+
japcxnq,gnrbxqk,fbp,fkevu,abkdfvq,xgc,tqowy,oszwqa,ohrnbzx,xohtqk,wgold,han,ucxlz,eldrw,gkis,pglfcwd,utem,cmho,far,hbug,orh,nzxa,sdyvguc,mtvl,bpio,jidq,cawz,faywirp,qezunv,bdigcl
36+
hbwdezkj,hntpxj,hngkej,hdjnlj,hgmbyj,hkatwj,hakqj,hjwkyj,huoynmj,hnhejkwlj,hqigj,hzploiegj,hybjmfj,hgsjj,hhnsj,hachtej,hvzkxj,hwyfj,hvaqj,hdkjboj,hmeurj,hoanj,hroaxcpdj,hgtqjdlj,hdiujqj,hwtyj,hvoefxcjj,hybej
37+
hdmt,osetawh,ahjuq,qfltczh,boead,xieb,powxuhf,ksm,fimpeuv,ybcq
38+
emltzk,qkm,nhj,jdecnos,paqu,utvqg,btydmjx,uoy,ycv,vnqszr,qrfyo,xzrp,gkcnsw,riqytg,vlxeuh,bimptyu,pgio,ljdpaz,lxwrf,pwndb,pnc,oulbqhe,smfid,amcf,bsev,pikz
39+
wtsdk,gmqdl,vftj,qfkejah,ngvylbu,edklrax,vpztq,wxqebi,inf,dhl,yfsvrg,iwyu,zuebx,dfoc,qyizcf,eiqyhfv,iyrg,nmeqilr,dyx,ztnusg,fkuy,dlmiszx,bia,cdj,ngjbdp,qun,wjzig,rhimw,hqtn,rcqg,tkuwa,ukpewbn,nmid,boc,nrbzqm
40+
azonem,thipxv,uwexs,vuqe,oax,lxw,cke,tcmoslw,vau,dscmukq,ydfait,jkm,wnrzam,dglz,duxoz,swkufon,cop,qbifu,qgywxk,jiftea,rtmva,fwx,thi,thd

moderate/33 - Double squares/33.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// https://www.codeeval.com/open_challenges/33/
2+
var first = true;
3+
var fs = require("fs");
4+
fs.readFileSync(process.argv[2]).toString().split('\n').forEach(function (line) {
5+
line = line.trim();
6+
if( line !== '' ){
7+
if( first ) {
8+
// You should first read an integer N, the number of test cases.
9+
first = false;
10+
}
11+
else{
12+
// console.log('-------------------- ' + line);
13+
var number = Number(line);
14+
var i = (Math.sqrt(number)>>0) + 1;
15+
var total = 0;
16+
while( i-- ){
17+
var sqrt = Math.sqrt( number - i*i );
18+
if( sqrt == (sqrt >> 0) ){
19+
total++;
20+
}
21+
}
22+
console.log( (total / 2)>>0 );
23+
}
24+
}
25+
});
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
header('Content-Type: text/plain; charset=utf-8');
3+
4+
// https://www.codeeval.com/open_challenges/33/
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+
15+
$first = true;
16+
17+
while ( $fp && !feof( $fp ) ) {
18+
$line = trim(fgets($fp));
19+
if( $line !== '' ){
20+
if( $first ){
21+
$first = false;
22+
}
23+
else{
24+
$total = 0;
25+
$i = (sqrt($line/2)>>0) + 1;
26+
while( $i-- ){
27+
$sqrt = sqrt( $line - $i*$i );
28+
if( $sqrt == ($sqrt >> 0) ){
29+
$total++;
30+
}
31+
}
32+
echo $total . "\n";
33+
}
34+
}
35+
36+
}//
37+
fclose( $fp );
38+
}
39+
else{
40+
echo '!fp'."\n";
41+
}
42+
}
43+
else{
44+
echo '!readable'."\n";
45+
}
46+
}
47+
else{
48+
echo '!file_exists'."\n";
49+
}
50+
}
51+
else{
52+
echo '!argv[1]'."\n";
53+
}
54+
55+
exit(0);
56+
57+
?>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
5
2+
10
3+
25
4+
3
5+
0
6+
1
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
0
2+
1
3+
2
4+
4
5+
8
6+
16
7+
32

moderate/54 - Cash register/54.js

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// https://www.codeeval.com/open_challenges/54/
2+
3+
var bills_coins = {
4+
'ONE HUNDRED': 10000,
5+
'FIFTY': 5000,
6+
'TWENTY': 2000,
7+
'TEN': 1000,
8+
'FIVE': 500,
9+
'TWO': 200,
10+
'ONE': 100,
11+
'HALF DOLLAR': 50,
12+
'QUARTER': 25,
13+
'DIME': 10,
14+
'NICKEL': 5,
15+
'PENNY': 1
16+
};
17+
18+
var fs = require("fs");
19+
fs.readFileSync(process.argv[2]).toString().split('\n').forEach(function (line) {
20+
line = line.trim();
21+
if( line !== '' ){
22+
var tmp = line.split(';');
23+
24+
var pp = Number(tmp[0]) * 100;
25+
var ch = Number(tmp[1]) * 100;
26+
var result = null;
27+
if( ch < pp ){
28+
result = 'ERROR';
29+
}
30+
else if( ch == pp ){
31+
result = 'ZERO';
32+
}
33+
else{
34+
var diff = ch - pp;
35+
result = [];
36+
37+
for( var k in bills_coins ){
38+
var v = bills_coins[k];
39+
if( diff >= v ){
40+
var cnt = Math.floor(diff / v);
41+
// console.log(cnt);
42+
for(var i=0 ; i < cnt ; i++){
43+
result.push( k );
44+
}
45+
diff -= cnt * v;
46+
diff = Math.round(diff);
47+
if( diff===0 ) break;
48+
}
49+
}
50+
result = result.join(',');
51+
}
52+
console.log(result);
53+
}
54+
});

0 commit comments

Comments
 (0)