Appian Community and Appian Academy are being upgraded. As a part of the upgrade, Appian Community is currently in read-only mode, and user registration is disabled until August 3. We apologize for any inconvenience this may cause, but a more secure, stable, and performant Community experience is coming soon!
The new Appian Community launches August 3, followed by Appian Academy on August 7. During the migration, Appian Community Edition, Appian Academy, Documentation, Certifications, Instructor-led Customer Training, Partner Sales Training & Accreditation, and Forum (for Appian Partners and Customers only) will remain available.
100 people standing in a circle in an order 1 to 100. No. 1 has a sword. He kills the next person (i.e. No. 2) and gives the sword to the next (i.e. No. 3). All people do the same until only 1 survives. Which number survives at the last? There are 100 people starting from 1 to 100.
can anyone please tell me how can i do it?
Discussion posts and replies are publicly visible
why not trying yourself than getting it served already prepared? :) The question was , if it was possible. yes it is. :)
Unknown said:please share me the code rule!chris_test_kc_recur
lol, he did say this is a recursive rule...
Yes this is the code for the rule. Being recursive, it calls itself
Optimized a bit:
if( count(ri!list)<=1, index(ri!list,1,null), a!localVariables( local!removeIndex: if(ri!index=count(ri!list),1, if(ri!index>count(ri!list),2,ri!index+1) ), rule!chris_test_kc_recur( list: remove(ri!list,local!removeIndex), index: local!removeIndex ) ) )
It's called the Josephus Problem. It was inspired by a story in "The Jewish War" by Flavius Josephus.
Apparently, the solutions for n=2 up to group size 78 are sequence number A006257 in the On-line Encyclopedia of Integer Sequences
Wikipedia
The Jewish War
Here is the solution to your challenge. We have also added a feather so that the user may choose the number of players and who should start the game.
reduce( rule!EI_subEliminateTask(list: _, value: _), { ldrop( enumerate(ri!players) + 1, ri!startPlayer - 1 ), if( ri!startPlayer = 1, {}, enumerate(ri!startPlayer - 1) + 1 ) }, repeat(ri!players - 1, 0) ) subrule: rule!EI_subEliminateTask(list: _, value: _), code: { ldrop(ri!list, 2), ri!list[1] }