/* Conversion between kg <-> lb in Picat. This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ import mip. main => go. main([KgS,LbS]) => println("Syntax: kg_lb.pl Kg Lb (0 mean indicates weight)"), KgFloat = KgS.to_float(), LbFloat = LbS.to_float(), if KgFloat > 0.0 then Kg = KgFloat end, if LbFloat > 0.0 then Lb = LbFloat end, convert_mip(Kg,Lb), printf("%3.2fkg <-> %3.2flb\n", Kg,Lb), nl. go => % Kg = 100.0, Lb = 100, convert_mip(Kg,Lb), printf("%3.2fkg <-> %3.2flb\n", Kg,Lb), nl. to_lb(Kg) = 2.20462262*Kg. to_kg(Lb) = Lb/2.20462262. convert_mip(Kg,Lb) => if (nonvar(Kg), nonvar(Lb)) ; (var(Kg), var(Lb)) then println("Some - but not both - of Kg and Lb should be > 0"), halt end, if var(Kg) then Kg :: 0.0..10000.0 else Lb :: 0.0..10000.0 end, Lb #= 2.20462262*Kg, solve([Lb,Kg]). convert(Kg,Lb) => if Kg =:= 0.0, Lb =:= 0.0 then println("Some of Kg and Lb should be > 0"), halt end, if Kg > 0.0, Lb > 0.0 then println("Both of Kg and Lb cannot be > 0"), halt end, if Kg =:= 0.0 then printf("%0.2flb -> %0.2fkg\n", Lb,to_kg(Lb)) else printf("%0.2fkg -> %0.2flb\n", Kg,to_lb(Kg)) end, nl.