Improve combinations algorithm speed

This commit is contained in:
2021-12-06 15:56:44 +00:00
parent 766a1dda83
commit b058fba814
2 changed files with 59 additions and 38 deletions
+31 -28
View File
@@ -1,40 +1,43 @@
{-# LANGUAGE TupleSections #-}
module Dodge.Combine.Combinations where
import Dodge.Data
import Dodge.Item.Weapon.BulletGuns
import Dodge.Item.Weapon.Launcher
itemCombinations :: [([CombineType],Item)]
itemCombinations :: [([(Int,CombineType)],Item)]
itemCombinations =
[ p [PIPE,HARDWARE] (bangStick 1)
, p [BANGSTICK 1,TIN] pistol
, p [PISTOL, SPRING, HARDWARE] autoPistol
, p [AUTOPISTOL, PLANK, HARDWARE] smg
, p [AUTOPISTOL, HARDWARE] machinePistol
, p [BANGSTICK 1,CAN] revolver
, p [REVOLVER, SPRING, HARDWARE] $ revolverX 1
[ po [PIPE, HARDWARE] (bangStick 1)
, po [BANGSTICK 1, TIN] pistol
, po [PISTOL, SPRING, HARDWARE] autoPistol
, po [AUTOPISTOL, PLANK, HARDWARE] smg
, po [AUTOPISTOL, HARDWARE] machinePistol
, po [BANGSTICK 1,CAN] revolver
, po [REVOLVER, SPRING, HARDWARE] $ revolverX 1
, p [PIPE,TUBE,HARDWARE] bangCone
, p [BANGCONE,PLANK] blunderbuss
, p [BLUNDERBUSS,TUBE] grapeShotCannon
, p [BANGCONE,PUMP,HARDWARE] $ grenadeLauncher 1
, p [GRENADELAUNCHER 1,MOTOR,DRUM] $ grenadeLauncher 2
, po [PIPE,TUBE,HARDWARE] bangCone
, po [BANGCONE,PLANK] blunderbuss
, po [BLUNDERBUSS,TUBE] grapeShotCannon
, po [BANGCONE,PUMP,HARDWARE] $ grenadeLauncher 1
, po [GRENADELAUNCHER 1,MOTOR,DRUM] $ grenadeLauncher 2
, p [PIPE,PIPE,HARDWARE] bangCane
, p [BANGCANE,PIPE,PIPE] (bangCaneX 2)
, p [BANGCANE,TIN] rifle
, p [RIFLE,SPRING,HARDWARE] autoRifle
, p [RIFLE,SPRING,CAN] assaultRifle
, p [BANGCANE,BANGCANE] miniGun
, p [p 2 PIPE,o HARDWARE] bangCane
, p [p 2 PIPE,o BANGCANE] (bangCaneX 2)
, po [BANGCANE,TIN] rifle
, po [RIFLE,SPRING,HARDWARE] autoRifle
, po [RIFLE,SPRING,CAN] assaultRifle
, po [BANGCANE,BANGCANE] miniGun
, p [PIPE,PIPE,PIPE,HARDWARE] bangRod
, p [BANGROD,PLANK,HARDWARE] elephantGun
, p [ELEPHANTGUN,HARDWARE,TIN] amr
, p [ELEPHANTGUN,HARDWARE,CAN] sniperRifle
, p [BANGROD,PLATE,DRUM,MOTOR] machineGun
, p [p 3 PIPE,o HARDWARE] bangRod
, po [BANGROD,PLANK,HARDWARE] elephantGun
, po [ELEPHANTGUN,HARDWARE,TIN] amr
, po [ELEPHANTGUN,HARDWARE,CAN] sniperRifle
, po [BANGROD,PLATE,DRUM,MOTOR] machineGun
, p [TUBE,TUBE,TUBE,HARDWARE] launcher
, p [p 3 TUBE,o HARDWARE] launcher
]
++ map (\i -> ([PIPE,BANGSTICK i],bangStick (i+1))) [1..8]
++ map (\i -> ([REVOLVERX i,CAN] ,revolverX (i+1))) [1..5]
++ map (\i -> ([BANGCANEX i,PIPE,PIPE] ,bangCaneX (i+1))) [1..5]
++ map (\i -> po [PIPE,BANGSTICK i] $ bangStick (i+1)) [1..8]
++ map (\i -> po [REVOLVERX i,CAN] $ revolverX (i+1)) [1..5]
++ map (\i -> p [o (BANGCANEX i),p 2 PIPE] $ bangCaneX (i+1)) [1..5]
where
p = (,)
po xs it = (map o xs,it)
o = (1,)