Magic The Gathering card deck of programming language

From Esolang
Jump to navigation Jump to search

I was thinking... if you could make a deck in Magic: The Gathering to make a program that will run and calculate something, even if you had to make up new cards to do it, then you would write a program by choosing how many of each card to put into the deck.

Magic: The Esolang

I've been thinking about this for a while, and here's what I've come up with. The program specifies the number of players, their alliances, and the order of the cards in each deck (which must obey usual deckbuilding rules, except that a deck may end with an infinite amount of basic land). Players play lands, spells, and abilities whenever possible, except that mana abilities are only played when the mana is needed to power a spell or ability. Creatures attack whenever possible and block so as to block all attackers and to block with all creatures if possible, and combat damage is arranged so as to destroy as many enemy creatures as possible, but otherwise there are no constraints (specifically, programs have to be arranged in such a way that the right card is always targeted), except that non-enchanted permanents are enchanted in preference to enchanted ones. Provisionally, output is in the form of revealing cards (outputs their names), and X spells (outputs X), although I'm finding it hard to write program under that output rule.

Example

2 players, P1 v P2. P1 plays first.

P1 decklist:
Plains x 7
Forest x 7
Pacifism x 1
Oathsworn Giant x 1
Mountain x 7
Reflexes x 1
Phytohydra x 1
Island x 32
Mnemonic Nexus x 4

P2 decklist:
Plains x 7
Forest x 7
Pacifism x 1
Oathsworn Giant x 1
Mountain x 8
Phytohydra x 1
Island x 32
Mnemonic Nexus x 4

(All the cards here are currently tournament-legal, and the decks are also legal (although not very strong)). The powers of the Phytohydras here form the Fibonacci sequence. I haven't yet been able to make this produce output, however.

See also

External resources