Merge pull request #46 from NicMcPhee/fix-from-string-instruction

Fix from string instruction and several PSB2 problems
This commit is contained in:
Lee Spector 2022-03-04 19:34:18 -05:00 committed by GitHub
commit 0412f4015b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 26 additions and 57 deletions

View File

@ -78,19 +78,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance correct-output output))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -46,19 +46,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance (str correct-output) (str output)))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -47,19 +47,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance (str correct-output) (str output)))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -74,19 +74,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance correct-output output))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -46,19 +46,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance (str correct-output) (str output)))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -59,19 +59,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance (str correct-output) (str output)))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -50,19 +50,14 @@
(:step-limit argmap)) (:step-limit argmap))
:string)) :string))
inputs) inputs)
parsed-outputs (map (fn [output]
(try (read-string output)
#?(:clj (catch Exception e 1000.0)
:cljs (catch js/Error. e 1000.0))))
outputs)
errors (map (fn [correct-output output] errors (map (fn [correct-output output]
(if (= output :no-stack-item) (if (= output :no-stack-item)
10000 10000
(metrics/levenshtein-distance (str correct-output) (str output)))) (metrics/levenshtein-distance correct-output output)))
correct-outputs correct-outputs
parsed-outputs)] outputs)]
(assoc individual (assoc individual
:behaviors parsed-outputs :behaviors outputs
:errors errors :errors errors
:total-error #?(:clj (apply +' errors) :total-error #?(:clj (apply +' errors)
:cljs (apply + errors))))) :cljs (apply + errors)))))

View File

@ -121,9 +121,13 @@
:name "_from_string"} :name "_from_string"}
(fn [stack state] (fn [stack state]
(make-instruction state (make-instruction state
#(try ((if (= stack :integer) int float) (read-string %)) #(try (if (= stack :integer)
#?(:clj (catch Exception e) #?(:clj (Integer/parseInt %)
:cljs (catch js/Error. e))) :cljs (js/parseInt %))
#?(:clj (Float/parseFloat %)
:cljs (js/parseFloat %)))
#?(:clj (catch Exception e :ignore-instruction)
:cljs (catch js/Error e :ignore-instruction)))
[:string] [:string]
stack))) stack)))