+: parse-cards ( strings -- seq )
+ [
+ [ blank? ] trim
+ " " split1
+ [ string>number ]
+ [ standard-cards swap cards-by-name first ] bi* <array>
+ ] map concat ;
+
+: parse-mtga-deck ( string -- deck sideboard )
+ [ blank? ] trim
+ "Deck" ?head drop
+ string-lines
+ "Sideboard" split1
+ [ parse-cards ] bi@ ;
+
+: sort-by-deck-order ( seq -- seq' )
+ [ "Land" any-type? not ] partition
+ [ sort-by-set-colors ] bi@ append ;
+
+: deck. ( seq -- )
+ sort-by-deck-order normal-cards. ;
+