NAL-Game-5
==========

1. Overall function

Initial goals:
(&&,<#1() --> [struck]>,<#1() --> enemy>)! 

Given knowledge:
<{e001} --> enemy>. 
<{w001} --> weapon>. %0.93;0.86%
<{w001}--> throwable>.
<(*,{e001},{gate005}) --> unreachable>. %1.00;0.90%
<{e001} --> (/,^throw,#1(),_)>.
<(&/,<(*,#1,#2()) --> unreachable>,<#3() --> throwable>,<#3() --> weapon>,<#1 --> (/,^throw,#3(),_)>) ==> <#1 --> [struck]>>.

Executed operations:
EXECUTE: ^throw({w002},{e001})

This version of the game adds the situation where the enemy is impossible to get close to. For the player to react to this scenario, a command to throw a weapon is available. In order to set the scene for the system, the location of enemy is deemed as unreachable. The go-to and strike commands are removed, as they are not applicable in this system, and a throw action has been added.

2. Step sequence

*1*
IN: (&&,<#1() --> [struck]>,<#1() --> enemy>)! %1.00;0.90% {0 : 1} 
IN: <{e001} --> enemy>. %1.00;0.90% {0 : 2} 
8
OUT: <{e001} --> [struck]>! %1.00;0.81% {8 : 2;1} 

*2*
  IN: <{e001} --> [struck]>! %1.00;0.81% {0 : 1} 
  IN: <(&/,<(*,#1,#2()) --> unreachable>,<#3() --> throwable>,<#3() --> weapon>,<#1 --> (/,^throw,#3(),_)>) ==> <#1 --> [struck]>>. %1.00;0.90% {0 : 2} 
9
 OUT: (&/,<(*,{e001},#1()) --> unreachable>,<#2() --> throwable>,<#2() --> weapon>,<{e001} --> (/,^throw,#2(),_)>)! %1.00;0.73% {9 : 2;1} 

*3*

  IN: (&/,<(*,{e001},#1()) --> unreachable>,<#2() --> throwable>,<#2() --> weapon>,<{e001} --> (/,^throw,#2(),_)>)! %1.00;0.73% {0 : 1} 
  IN: <(*,{e001},{gate005}) --> unreachable>. %1.00;0.90% {0 : 2} 
58
 OUT: (&/,<#1() --> throwable>,<#1() --> weapon>,<{e001} --> (/,^throw,#1(),_)>)! %1.00;0.66% {58 : 2;1} 

*4*

  IN: (&/,<{w001} --> throwable>,<{e001} --> (/,^throw,#1(),_)>,<#1() --> weapon>,<{e001} --> (/,^throw,#1(),_)>)! %1.00;66% {0 : 1} 
  IN: <{w001} --> throwable>. %1.00;0.90% {0 : 2} 
3
 OUT: (&/,<{e001} --> (/,^throw,#1(),_)>,<#1() --> weapon>,<{e001} --> (/,^throw,#1(),_)>)! %1.00;0.59% {3 : 2;1} 

*5*

  IN: (&/,<{e001} --> (/,^throw,#1(),_)>,<#1() --> weapon>,<{e001} --> (/,^throw,#1(),_)>)! %1.00;0.59% {0 : 1} 
  IN: <{e001} --> (/,^throw,#1(),_)>. %1.00;0.90% {0 : 2} 
19
 OUT: (&/,<#1() --> weapon>,<{e001} --> (/,^throw,#1(),_)>)! %1.00;0.53% {19 : 2;1} 

*6*

IN: (&/,<#1() --> weapon>,<{e001} --> (/,^throw,#1(),_)>)! %1.00;0.53% {19 : 2;1} 
IN: <{w001} --> weapon>. %0.93;0.86% {0 : 2} 
4
 OUT: <{e001} --> (/,^throw,{w001},_)>! %0.93;0.42% {4 : 2;1} 

*7*

  IN: <{e001} --> (/,^throw,{w001},_)>! %0.93;0.42% {0 : 1} 
10
OUT: <(*,{w001},{e001}) --> ^throw>! %0.93;0.42% {10 : 1} 

*8*

  IN: <(*,{w001},{e001}) --> ^throw>! %0.93;0.42% {0 : 1} 
1
 OUT: <(*,{w001},{e001}) --> ^throw>. :|: %1.00;0.90% {1 : 1 : 2} 
[EXECUTE: ^throw({w001},{e001})]

3.  Description
The very first step, like the previous systems, is to declare the overall goal which is to make the enemy have been struck. Next, the previous path is deviated from by declaring the enemy unreachable, and what must be done to make the enemy gain the struck property. This completely changes the remainder of the input, as each one pertains to the new goal. For the throw command, no go-to command is needed, but now the weapon must be confirmed to be throwable. Once this is all confirmed and inputted, the throw action is executed by the system.