Skip to content

Instantly share code, notes, and snippets.

@TheZoq2
Created November 6, 2024 23:05
Show Gist options
  • Save TheZoq2/de76f300ea2ba1a319cab539bd77fd6f to your computer and use it in GitHub Desktop.
Save TheZoq2/de76f300ea2ba1a319cab539bd77fd6f to your computer and use it in GitHub Desktop.
https://play.spade-lang.org/#eyJzcGFkZVNvdXJjZSI6InVzZSB2Z2E6OnZnYTo6VmdhVGltaW5nO1xudXNlIHZnYTo6dmdhOjp2Z2FfZnNtO1xudXNlIHZnYTo6dmdhOjp2Z2Ffb3V0cHV0O1xuXG51c2UgZml4ZWQ6OmxpYjo6RnA7XG5cbnVzZSBzdGQ6OmNvbnY6OmJpdHNfdG9fdWludDtcbnVzZSBzdGQ6OmNvbnY6OmludF90b191aW50O1xudXNlIHN0ZDo6aW86OnJpc2luZ19lZGdlO1xuXG5zdHJ1Y3QgQ29sb3Ige1xuICByOiB1aW50PDg+LFxuICBnOiB1aW50PDg+LFxuICBiOiB1aW50PDg+XG59XG5cbmVudW0gR2FtZVN0YXRlIHtcbiAgU3RhcnQsXG4gIFBsYXkge1xuICAgIHBsYXllcl9zcGVlZDogRnA8MTYsIDQ+LFxuICAgIHBsYXllcl9wb3M6IEZwPDE2LCA0PixcbiAgICBwaXBlczogW3VpbnQ8ND47IDRdLFxuICAgIHBpcGVfb2Zmc2V0OiB1aW50PDg+LFxuICB9XG59XG5cbmVudGl0eSBnYW1lKGNsazogY2xvY2ssIHJzdDogYm9vbCwgbmV3X2ZyYW1lOiBib29sLCBidG46IFtib29sOyA4XSwgZ2FtZV9vdmVyOiBib29sKSAtPiBHYW1lU3RhdGUge1xuICBsZXQgZ2FtZV9pbml0aWFsID0gR2FtZVN0YXRlOjpQbGF5JChcbiAgICBwbGF5ZXJfc3BlZWQ6ICgtMTVfaTEyKS50b19maXhlZCgpLFxuICAgIHBsYXllcl9wb3M6ICgyMDBfaTEyKS50b19maXhlZCgpLFxuICAgIHBpcGVzOiBbNCwgOCwgNiwgN10sXG4gICAgcGlwZV9vZmZzZXQ6IDQsXG4gICk7XG5cbiAgcmVnKGNsaykgcm5nIHJlc2V0KHJzdDogW3RydWU7IDE2XSkgPSB7XG4gICAgbGV0IGJpdCA9IHJuZ1swXSBeXiBybmdbMl0gXl4gcm5nWzNdIF5eIHJuZ1s1XTtcbiAgICBybmdbMToxNl0gYGNvbmNhdF9hcnJheXNgIFtiaXRdXG4gIH07XG4gIGxldCBybmcgPSB0cnVuYyhiaXRzX3RvX3VpbnQocm5nKSk7XG5cbiAgcmVnKGNsaykgc3RhdGUgcmVzZXQocnN0OiBHYW1lU3RhdGU6OlN0YXJ0KSA9IG1hdGNoIHN0YXRlIHtcbiAgICBHYW1lU3RhdGU6OlN0YXJ0ID0+IGlmIGJ0blswXSB7Z2FtZV9pbml0aWFsfSBlbHNlIHtzdGF0ZX0sXG4gICAgR2FtZVN0YXRlOjpQbGF5JChwbGF5ZXJfcG9zLCBwbGF5ZXJfc3BlZWQsIHBpcGVfb2Zmc2V0LCBwaXBlcykgPT4ge1xuICAgICAgaWYgbmV3X2ZyYW1lIHtcbiAgICAgICAgbGV0IHBsYXllcl9zcGVlZCA9IGlmIGJ0blswXSB7XG4gICAgICAgICAgKC0xNV9pMTIpLnRvX2ZpeGVkKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsZXQgYWNjZWxlcmF0aW9uID0gKDFfaTE2IDw8IDQpLnRvX2ZpeGVkX3JhdygpO1xuICAgICAgICAgIHBsYXllcl9zcGVlZC5hZGQoYWNjZWxlcmF0aW9uKS50cnVuY2F0ZSgpXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHBsYXllcl9wb3MgPSBwbGF5ZXJfcG9zLmFkZChwbGF5ZXJfc3BlZWQpLnRydW5jYXRlKCk7XG5cbiAgICAgICAgR2FtZVN0YXRlOjpQbGF5JChcbiAgICAgICAgICBwbGF5ZXJfc3BlZWQsXG4gICAgICAgICAgcGxheWVyX3BvcyxcbiAgICAgICAgICBwaXBlX29mZnNldDogdHJ1bmMocGlwZV9vZmZzZXQgKyA0KSxcbiAgICAgICAgICBwaXBlczogaWYgcGlwZV9vZmZzZXQgPT0gdHJ1bmMoMHU4IC0gNCkge3BpcGVzWzE6NF0gYGNvbmNhdF9hcnJheXNgIFtybmddfSBlbHNlIHtwaXBlc30sXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIGdhbWVfb3ZlciB7R2FtZVN0YXRlOjpTdGFydH0gZWxzZSB7c3RhdGV9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHN0YXRlXG59XG5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBUaGlzIGlzIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0IHBsYXlpbmcgYXJvdW5kIHdpdGggY2hhbmdpbmcgdGhlIG91dHB1dFxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmVudGl0eSBwaXhlbF90b19jb2xvcihcbiAgY2xrOiBjbG9jayxcbiAgcnN0OiBib29sLFxuICBuZXdfZnJhbWU6IGJvb2wsXG4gIHBpeGVsOiAodWludDwxNT4sIHVpbnQ8MTU+KSxcbiAgYnRuOiBbYm9vbDsgOF1cbikgLT4gQ29sb3Ige1xuICBsZXQgKHgsIHkpID0gcGl4ZWw7XG4gIGxldCAoeCwgeSk6IChpbnQ8MTY+LCBpbnQ8MTY+KSA9ICh6ZXh0KHgpLnRvX2ludCgpLCB6ZXh0KHkpLnRvX2ludCgpKTtcblxuICBkZWNsIGdhbWVfb3ZlcjtcbiAgbGV0IHN0YXRlID0gaW5zdCBnYW1lJChjbGssIHJzdCwgbmV3X2ZyYW1lLCBidG4sIGdhbWVfb3Zlcik7XG5cbiAgbGV0IChjb2xvciwgZ2FtZV9vdmVyKSA9IG1hdGNoIHN0YXRlIHtcbiAgICBHYW1lU3RhdGU6OlN0YXJ0ID0+IChDb2xvcigwLDAsMjU1KSwgZmFsc2UpLFxuICAgIEdhbWVTdGF0ZTo6UGxheSQocGxheWVyX3BvcywgcGxheWVyX3NwZWVkOiBfLCBwaXBlX29mZnNldCwgcGlwZXMpID0+IHtcbiAgICAgIGxldCBwbGF5ZXJfc2l6ZSA9IDMyO1xuICAgICAgbGV0IHBpcGVfZ2FwID0gOTA7XG4gICAgICBsZXQgcGxheWVyX2luX3kgPSB5ID4gcGxheWVyX3Bvcy5hc19pbnQoKSAmJiB5IDwgdHJ1bmMocGxheWVyX3Bvcy5hc19pbnQoKSArIHBsYXllcl9zaXplKTtcbiAgICAgIGxldCBwbGF5ZXJfaW5feCA9IHggPiAyMCAmJiB4IDwgdHJ1bmMoMjAgKyBwbGF5ZXJfc2l6ZSk7XG5cbiAgICAgIGxldCBwaXBlX2lkeCA9ICh4ICsgemV4dChwaXBlX29mZnNldCkudG9faW50KCkpIC8gMjU2O1xuICAgICAgbGV0IGZyb21fcGlwZSA9ICh4ICsgemV4dChwaXBlX29mZnNldCkudG9faW50KCkpICUgMjU2O1xuICAgICAgbGV0IHBpcGUgPSAocGlwZXNbdHJ1bmMocGlwZV9pZHgudG9fdWludCgpKV0gKiAxNSkudG9faW50KCk7XG5cbiAgICAgIGxldCBpc19waXBlID0gKHkgPCBwaXBlIHx8IHkgPiB0cnVuYyhwaXBlICsgcGlwZV9nYXApKSAmJiBmcm9tX3BpcGUgPCAyMDtcbiAgICAgIGxldCBpc19wbGF5ZXIgPSBwbGF5ZXJfaW5feCAmJiBwbGF5ZXJfaW5feTtcbiAgICAgIGxldCBjb2xvciA9IGlmIGlzX3BpcGUge1xuICAgICAgICBDb2xvcigyNTUsIDI1NSwgMClcbiAgICAgIH0gZWxzZSBpZiBpc19wbGF5ZXIge1xuICAgICAgICBDb2xvcigyNTUsMCwwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQ29sb3IoMCwwLDApXG4gICAgICB9O1xuICAgICAgbGV0IGdhbWVfb3ZlciA9IGlzX3BpcGUgJiYgaXNfcGxheWVyO1xuICAgICAgKGNvbG9yLCBnYW1lX292ZXIpXG4gICAgfVxuICB9O1xuICBjb2xvclxufVxuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gVGhlIHBpeGVsX3RvX2NvbG9yIGVudGl0eSBhYm92ZSBpcyB1c2VkIHRvZ2V0aGVyIHdpdGggYSBsaWJyYXJ5IGZvclxuLy8gZHJpdmluZyB0aGUgVkdBIG1vbml0b3IuIFRoYXQgZHJpdmluZyBoYXBwZW5zIGhlcmUuIFlvdSBwcm9iYWJseSBkb24ndFxuLy8gbmVlZCB0byBtb2RpZnkgaXRcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbi8vIFRoaXMgaXMgdGhlIHRvcCBtb2R1bGUgdGhhdCB3ZSB3aWxsIGNvbm5lY3QgdG8gdGhlIHNpbXVsYXRvciBoZXJlLFxuLy8gb3IgdG8gYSByZWFsIG1vbml0b3Igb24gYW4gRlBHQS4gI1tub19tYW5nbGVdIHRlbGxzIHRoZSBTcGFkZSBjb21waWxlclxuLy8gdG8gbm90IGNoYW5nZSBhbnkgbmFtZXMgd2hpY2ggbWFrZXMgbWFwcGluZyB0aGUgc2lnbmFscyB0byBzaW11bGF0b3Jcbi8vIG9yIHBoeXNpY2FsIG91dHB1dHMgZWFzaWVyLlxuI1tub19tYW5nbGVdXG5lbnRpdHkgdG9wKFxuICAvLyBEaWdpdGFsIGhhcmR3YXJlIGlzIGRyaXZlbiBieSBhIGNsb2NrLiBFdmVyeSB0aW1lIGl0IGZsaXBzIGZyb20gMCB0byAxLFxuICAvLyBhbGwgdGhlIHNpZ25hbHMgaW4gb3VyIGRlc2lnbiB3aWxsIGJlIHJlLWNvbXB1dGVkXG4gICNbbm9fbWFuZ2xlXSBjbGs6IGNsb2NrLFxuXG4gICNbbm9fbWFuZ2xlXSBidG46IFtib29sOyA4XSxcbiAgXG4gIC8vIFRoZXNlIGFyZSB0aGUgc2lnbmFscyB3ZSdsbCBzZW5kIHRvIHRoZSBkaXNwbGF5XG4gICNbbm9fbWFuZ2xlXSBoc3luYzogJm11dCBib29sLFxuICAjW25vX21hbmdsZV0gdnN5bmM6ICZtdXQgYm9vbCxcbiAgI1tub19tYW5nbGVdIHI6ICZtdXQgdWludDw4PixcbiAgI1tub19tYW5nbGVdIGc6ICZtdXQgdWludDw4PixcbiAgI1tub19tYW5nbGVdIGI6ICZtdXQgdWludDw4Pixcbikge1xuICAvLyBJbiBvcmRlciB0byBzZXQgb3VyIGNpcmN1aXQgYmFjayB0byBpdHMgaW5pdGlhbCBzdGF0ZSBvbiBzdGFydHVwLCB3ZSdsbFxuICAvLyBnZW5lcmF0ZSBhIHJlc2V0IHNpZ25hbCB0byB1c2UgbGF0ZXJcbiAgbGV0IHJzdCA9IGluc3QgcG93ZXJfb25fcmVzZXQoY2xrKTtcblxuICAvLyBXZSB1c2UgYSBWR0EgbGlicmFyeSB0byBnZW5lcmF0ZSB0aGUgc2lnbmFscyBmb3IgZHJpdmluZyB0aGUgVkdBIGRpc3BsYXkuXG4gIC8vIFRoYXQgbGlicmFyeSBpcyBzcGVjaWZpZWQgaW4gc3dpbS50b21sXG4gIGxldCB2Z2Ffc3RhdGUgPSBpbnN0IHZnYV9mc20oY2xrLCByc3QsIHRydWUsIHZnYV90aW1pbmcoKSk7XG4gIGxldCB2Z2Ffb3V0ID0gdmdhX291dHB1dCh2Z2Ffc3RhdGUpO1xuXG4gIC8vIFRoZSBWR0EgbGlicmFyeSBnaXZlcyB1cyBhbiB4IGFuZCB5IGNvb3JkaW5hdGUsIGFuZCBpdCBpcyBvdXIgam9iIHRvIGZpbGwgaW5cbiAgLy8gdGhlIGNvbG9yIGF0IHRoYXQgcGl4ZWwgaGVyZS4gU29tZSBjbG9jayBjeWNsZXMsIFZHQSBkb2Vzbid0IG91dHB1dCBhbnkgcGl4ZWxzXG4gIC8vIGJlY2F1c2UgaXQgaXMgYnVzeSAnc3luY2luZycsIHdoaWNoIGlzIHdoeSB3ZSBuZWVkIHRvIGRvIGEgbWF0Y2ggaGVyZS5cbiAgbGV0IGNvbG9yID0gbWF0Y2ggdmdhX291dC5waXhlbCB7XG4gICAgU29tZSgoeCwgeSkpID0+IHtcbiAgICAgIGluc3QgcGl4ZWxfdG9fY29sb3IkKFxuICAgICAgICBjbGssXG4gICAgICAgIHJzdCxcbiAgICAgICAgbmV3X2ZyYW1lOiBpbnN0IHJpc2luZ19lZGdlKGNsaywgdmdhX291dC52c3luYyksXG4gICAgICAgIHBpeGVsOiAoaW50X3RvX3VpbnQoeCksIGludF90b191aW50KHkpKSxcbiAgICAgICAgYnRuXG4gICAgICApXG4gICAgfSxcbiAgICBOb25lID0+IENvbG9yKDAsIDAsIDApXG4gIH07XG5cbiAgLy8gRmluYWxseSwgd2UgY2FuIHNldCB0aGUgVkdBIHNpZ25hbHNcbiAgc2V0IHIgPSBjb2xvci5yO1xuICBzZXQgZyA9IGNvbG9yLmc7XG4gIHNldCBiID0gY29sb3IuYjtcbiAgc2V0IGhzeW5jID0gdmdhX291dC5oc3luYztcbiAgc2V0IHZzeW5jID0gdmdhX291dC52c3luYztcbn1cblxuZm4gdmdhX3RpbWluZygpIC0+IFZnYVRpbWluZyB7XG4gIFZnYVRpbWluZyQoXG4gICAgeF9waXhlbHM6IDY0MCxcbiAgICB4X2Zyb250X3BvcmNoOiAxNixcbiAgICB4X3N5bmNfd2lkdGg6IDk2LFxuICAgIHhfYmFja19wb3JjaDogNDgsXG5cbiAgICB5X3BpeGVsczogNDgwLFxuICAgIHlfZnJvbnRfcG9yY2g6IDEwLFxuICAgIHlfc3luY193aWR0aDogMTIsXG4gICAgeV9iYWNrX3BvcmNoOiAzMyxcbiAgKVxufVxuXG5lbnRpdHkgcG93ZXJfb25fcmVzZXQoY2xrOiBjbG9jaykgLT4gYm9vbCB7XG4gIHJlZyhjbGspIHJzdF9jb3VudGVyOiB1aW50PDQ+IGluaXRpYWwoNSkgPVxuICAgIGlmIHJzdF9jb3VudGVyID09IDAge1xuICAgICAgMFxuICAgIH0gZWxzZSB7XG4gICAgICB0cnVuYyhyc3RfY291bnRlci0xKVxuICAgIH07XG4gIHJzdF9jb3VudGVyICE9IDBcbn1cbiIsInRvbWxTb3VyY2UiOiJuYW1lID0gXCJwbGF5Z3JvdW5kXCJcblxuW2xpYnJhcmllc11cbnZnYSA9IHtnaXQgPSBcImh0dHBzOi8vZ2l0bGFiLmNvbS9zcGFkZS1sYW5nL2xpYi92Z2Ffc3BhZGVcIiwgYnJhbmNoID0gXCJtYWluXCJ9XG5maXhlZCA9IHtnaXQgPSBcImh0dHBzOi8vZ2l0bGFiLmNvbS9zcGFkZS1sYW5nL2xpYi9maXhlZFwiLCBicmFuY2ggPSBcIm1haW5cIn0ifQ==
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment