fork download
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4.  
  5. sub eval_unit {
  6. my $val = shift;
  7. $val =~ s/kg/*1000000+/;
  8. $val =~ s/mg/*1+/;
  9. $val =~ s/g/*1000+/;
  10. $val =~ s/mm/*1+/;
  11. $val =~ s/cm/*10+/;
  12. $val =~ s/km/*1000000+/;
  13. $val =~ s/m/*1000+/;
  14. $val =~ s/日/*86400+/;
  15. $val =~ s/時間/*3600+/;
  16. $val =~ s/分/*60+/;
  17. $val =~ s/秒/*1+/;
  18. return eval($val . "0");
  19. }
  20.  
  21. sub parse {
  22. my $expr = shift;
  23. $expr =~ s/([^-+=])([-+=])/$1,$2/g;
  24. my @terms = split(/,/, $expr);
  25. my $ans = 0;
  26. my $unit;
  27. for my $term (@terms) {
  28. my $s = ($term =~ /=/ ? -1 : 1) * ($term =~ /-/ ? -1 : 1);
  29. if ($term =~ /□(.+)$/) {
  30. $unit = -$s * eval_unit("1$1");
  31. } elsif ($term =~ /^=?-?(.+)$/) {
  32. $ans += $s * eval_unit($1);
  33. }
  34. }
  35. return $ans / $unit;
  36. }
  37.  
  38. my @ans = ();
  39. my $debug = $ARGV[0];
  40. while (<>) {
  41. my($id, @expr) = split(/\t/);
  42. my $a = parse($expr[0]);
  43. my $b = parse($expr[1]);
  44. if ($a == $b) {
  45. print "$id: [OK] $a == $b\n" if $debug;
  46. } else {
  47. print "$id: [NG] $a <> $b\n";
  48. push(@ans, $id);
  49. }
  50. }
  51. print "\nAnswer:\n" . join(",", @ans) . "\n";
  52.  
  53.  
  54.  
Success #stdin #stdout 0.02s 3692KB
stdin
110	276km-100km-36km=□km	815mm+1m-415mm=□cm
111	□日+124750200秒=8403日20時間50分	□g+831mg=29g831mg
112	359220mg+104g717mg+□mg=848937mg	□時間+13日18時間+5日=835時間
113	□kg+290kg=836kg	□km=546km
114	10g+100g-□g=81g	2日4時間12分-840分-552分=□時間
115	654kg217g+179kg800g-□kg=405kg17g	844km739m90cm-256km367m90cm-□km=159km372m
116	208kg848g264mg+□kg=624kg848g264mg	□時間=17日8時間
117	1m31cm-□cm-20cm=40cm	32km866m50cm+□km=103km866m50cm
118	190秒-60秒-1分=□秒	128kg68g-49kg200g-8kg868g=□kg
119	466km551m-□km=27km551m	869kg-□kg-230kg=200kg
220	130m74cm-3281cm-1693cm=□m	53mg+□mg=134mg
221	□分+3480秒+2472秒=2時間37分12秒	530mm+□m+16m90cm=75m43cm
222	789kg-150kg-49kg=□kg	100mm+□cm+128mm=818mm
223	9km540m-4km-□km=1540m	□cm+4300mm+8400mm=22300mm
224	45kg650g950mg-□kg=5kg650g950mg	16g721mg+27g-□g=3721mg
225	694cm-□cm-1m=100cm	8m96cm-2cm-□cm=4000mm
226	948mg-□mg=300mg	280m41cm+410m-□m=4241cm
227	676km618m22cm-209km860m-231km758m22cm=□km	□cm+1940mm=4290mm
228	6時間4分44秒-4304秒-600秒=□分	35分+8時間43分-□分=275分
229	80kg101g686mg+□kg=423kg101g686mg	1m+□cm=4430mm
330	16980分-□時間-5760分=2日10時間	29009cm-□m-13000cm=3109cm
331	□kg+1000kg+133kg=1425kg	□m=29200cm
332	□kg+30000g=78kg	1g98mg-□mg-50mg=1g
333	29分55秒+3時間21分5秒+□分=30480秒	493kg823g-10kg200g-□g=206kg623g
334	11098mg-□g-2g318mg=780mg	□cm+1301mm+2m45cm=8m55cm1mm
335	5km274m16cm+31000cm+□m=14km33m16cm	260kg+5510kg+□kg=14219kg
336	444g300mg-31100mg-206g200mg=□g	1kg327g-1000g-□g=120g
337	□日+4日3時間55分+7日11時間=31135分	□kg+4kg200g=14200g
338	352g-□g-100g=100g	31669cm-□m-8269cm=8200cm
339	31680秒-□分-3時間4分=5640秒	□g+215g200mg=465g200mg
440	146470mg-□g=55g470mg	1日+□時間=6900分
441	524g685mg-□g-121685mg=148000mg	4g530mg+□g+20g160mg=279g690mg
442	100g+□g+10g=328g	143g400mg+223g-□g=148400mg
443	□g+0g+124g=350g	148900mm+□m+187m80cm=562m70cm
444	1730日+480日-□日=600日	61000mm+152164mm-52164mm=□m
445	12480秒+11時間35分36秒-7416秒=□時間	152900m+41000m-□km=63km900m
446	48秒+□秒+1分=4分53秒	346km190m-□km-154190m=7km
447	□kg+154571g=320kg571g	427g559mg-100000mg-161g559mg=□g
448	□時間+23160分=36日16時間	652m64cm-□m=158640mm
449	51935mg+34g350mg+□g=152285mg	159996g-□kg-65696g=28kg300g
550	22日15時間10分24秒-419808秒-□時間=408816秒	3600時間+140日+□日=603日
551	692分-□分=180分	□日+209日4時間20分+419904分=1012日18時間44分
552	29820分-10080分-7680分=□時間	□kg+123kg470g+98kg350g=422820g
553	65g140mg+□g=437140mg	12600分+□時間=34920分
554	1381kg900g-211000g-□kg=437900g	1028日-□日=295日
555	35230cm-□m=15730cm	8時間33分-□分-3時間7分=7920秒
556	372804312秒-1291日11時間50分-116499312秒=□時間	447km590m+442000m-219km590m=□km
557	1kg240g-□g-1kg=100g	55日4時間+□日+162720分=443760分
558	1668kg327g-594kg-450327g=□kg	8分38秒+384秒-4分38秒=□秒
559	138kg+25kg280g+□kg=451280g	288g=□g
660	□m+20m=177m	283km210m60cm-□km-1337360cm=112km837m
661	481km693m-1364000cm-90km53m=□km	90g110mg+186g+□g=654110mg
662	2m6cm9mm-370mm-□mm=1m	1373339m-□km=674km339m
663	232320秒+516462秒+□時間=1418382秒	301日-□日=115日
664	1441447分-□日-315日10時間7分=427080分	120日+□日+192日=701日
665	48320mg+1445000mg-646320mg=□g	□日+840日+16日=1703日
666	659m50cm6mm+118000mm+□m=1451506mm	1594564478cm-□km-385876178cm=534688300cm
667	53200cm+150m-309m=□m	173187km732m46cm+2999km918m-86667650460mm=□km
668	1097日12時間-220日-392日12時間=□日	371208分+418560分+□日=1488168分
669	542m=□m	264日8時間+230日6時間+□日=1492680分
770	333日4時間42分48秒+142日14分-20228208秒=□時間	249024時間+915日-5505日=□日
771	206870mg-□g=71g870mg	20453980cm-42km857m80cm-□km=2668200cm
772	400mm+□cm+960mm=2650mm	20670310cm-□km=77km703m10cm
773	8370310秒+□日=20984710秒	65cm+1m11cm7mm+□cm=3m22cm7mm
774	21397799秒-□日=34日15時間49分59秒	1kg+□g=1213g
775	602日5時間50分7秒-22162020秒-668587秒=□日	17日16時間+1日-4日14時間=□時間
776	15355920秒+22705560秒-□日=174日12時間38分	□mg+1g=1g266mg
777	23070000mg-7685200mg-3384800mg=□kg	3日12時間48分+1日23時間23分-43860秒=□時間
778	10562495cm+□km+20km675m10cm=23230005cm	39729kg357g280mg-6592344800mg-□kg=7697kg12g480mg
779	□km+1km506m80cm=23506800mm	49g940mg-16g940mg-11g=□g
880	66962785mg+□kg=172962785mg	5日16時間11分36秒+157日10時間19分40秒-4933876秒=□日
881	4時間25分=□分	173198400mm+130812000mm-□km=39km10m40cm
882	88km+117km-□km=71000m	176527990mm+18377000mm-□km=60904990mm
883	□日+80日+298時間=192日10時間	77kg313g+□kg=177313000mg
884	24862635秒+3512520秒-□日=10663155秒	463km923m80cm-79km38m70cm-□km=179885100mm
885	180141900mm+□km+39860540mm=593km2m44cm	10m+40cm+□cm=1413cm
886	□km+22km512m+76km871m60cm=181383600mm	2235分+2日20時間-□時間=23時間15分
887	183085350mm+59km143m-99km228m35cm=□km	24秒+2分-1秒=□秒
888	90kg472g+□kg+186382000mg=482kg854g	3828km629m98cm-□km-1023km410m=745km219m98cm
889	11km568m+189402580mm+□km=440km970m58cm	21時間36分+□時間=1日21時間36分
990	3693km844m68cm+475757444cm+□km=1515941912cm	3491000mg+6630540mg+□g=16829540mg
991	350mg+1000mg-□mg=603mg	1530670000mm-471913000mm-□km=311757000mm
992	133kg+950kg-□kg=153kg	654804470mg+□kg+293kg179g550mg=1877984020mg
993	2028412282mg-□kg-714kg576g900mg=520kg835g382mg	1g30mg-□mg=237mg
994	2067175600mg-757kg544g600mg-367kg631g=□kg	1020km378m-□km=78km378m
995	942m60cm-□cm-358m=137m40cm	4911286200cm-□km=439286200cm
996	3327780時間+□日+1049448時間=321479日12時間	321041km587m90cm-94886km867m-□km=8705972090cm
997	748013000cm+□km+22796km630m=11812276000cm	55700km+85500km-53354km=□km
998	186546277g-28677kg-74169277g=□kg	13533798720秒-□日=72941日4時間32分
999	879630km=□km	4592693940秒+42786日20時間40分36秒-□日=689475576秒
stdout
111: [NG] 6960 <> 29
112: [NG] 385000 <> 385
222: [NG] 590 <> 59
223: [NG] 4 <> 960
333: [NG] 277 <> 277000
334: [NG] 8 <> 480
444: [NG] 1610 <> 161
445: [NG] 13 <> 130
555: [NG] 195 <> 194
556: [NG] 40200 <> 670
666: [NG] 674 <> 6740
667: [NG] 373 <> 89520
777: [NG] 12 <> 120
778: [NG] 106 <> 25440
888: [NG] 206 <> 2060
889: [NG] 240 <> 24
999: [NG] 879630 <> 87963

Answer:
111,112,222,223,333,334,444,445,555,556,666,667,777,778,888,889,999