<!doctypehtml><htmllang="en"><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scale=1"><title>Tripeaks Solver 73k</title><scripttype="module"crossoriginsrc="./assets/index.b5c45835.js"></script><linkrel="stylesheet"href="./assets/index.58a4d054.css"><bodyclass="text-dark"><navclass="navbar navbar-expand navbar-dark bg-dark mb-4"x-data="navbar"><divclass="container"><divclass="navbar-brand d-flex flex-column"><spanclass="text-light fs-4">Tripeaks Solver 73k</span><spanclass="text-white-50 fs-6">by Adam Piontek</span></div><ulclass="navbar-nav ms-auto"><liclass="nav-item"><aclass="nav-link"href="https://github.com/apiontek/tripeaks-solitaire-solver-js-73k"x-html="biGithub"></a><liclass="nav-item"><aclass="nav-link"href="https://73k.us/"x-html="svg73k"></a><liclass="nav-item"><aclass="nav-link"href="https://twitter.com/adampiontek"x-html="biTwitter"></a></ul></div></nav><divclass="container"><divclass="row justify-content-center my-4"><divclass="col-xl-9"><divx-data="{show: false}"class="accordion"id="readMeAccordion"><divclass="accordion-item"><h2id="readMeHeader"class="accordion-header"><buttonclass="accordion-button fs-5":class="{'collapsed': !show}"type="button":aria-expanded="show ? 'true' : 'false'"aria-controls="collapseOne"@click="show = !show">Read Me / How To</button></h2><divid="collapseOne"class="accordion-collapse collapse":class="{'show': show}"aria-labelledby="headingOne"><divclass="accordion-body"><p>Enter cards representing a Tripeaks game below. Enter each card as 2 characters representing the rank (A, 2, 3, 4, 5, 6, 7, 8, 9, T, J, Q, K) and suit (C, D, H, S). For example, "TH" is the Ten of Hearts.<p>You don't have to know all the cards, this solver will give you as many moves as it can. Enter a "0" (a single zero) for unknown cards. You don't need to enter unknown cards before the first card you know. (However, the last 34 cards (base of peaks, stock) must be known.)<p>Entry is case-insensitive, and you can separate cards with any character (space, comma, etc), or use no separator.<h5>Valid examples</h5><p>These will complete quickly:<ul><li>7S 5D 7C 2D 0 0 3S 2H 3H 9H KC QC TD 8D 9C 7H 9D JS QS 4H 5C 5S 4C 2C QD 8C KD 3D KS JD 2S 7D KH AH 5H 9S 4S QH 6S 6D 3C JC TC 8H 6C TH AS AD 6H<li>jc, ts, 6d, 7h, qh, 3s, 5h, jh, 6h, 2d, ac, 7s, 7c, 3d, kd, 9s, 3c, th, 6c, ah, 8h, tc, 4s, 8c, ad, 3h, ks, 6s, js, 7d, jd, td, 2c, kh<li>7c03s0qsjc00JSasTSadtcqd9s4s2h9h8sjh6c3dks5s5c6h9C2Cac8C6d5DTH8dkckd9d4c5h8hqh6s</ul><p>This example will take several minutes, but will provide a solution, and should demonstrate that the page stays responsive and provides feedback on the solving progress:<ul><li>2D 6D AD 9S 4C 7C 7S 7D 9C 2S AC 8D 6S 6H 3C 5H QS JS 4S JH 5C AS 3H 3S AH TD 4D 5S TH 7H KS QH 6C KD 8S 2C TC JC 5D 3D 2H TS 4H JD KC KH 8H QC 8C QD 9D 9H</ul></div></div></div></div></div></div><divclass="row justify-content-center"><divclass="col-12 col-lg-9 col-xl-8 col-xxl-7"><formid="cardsInputForm"x-data="cardsInputForm"@submit.prevent="$dispatch('solve-game')"class="needs-validation":class="{'was-validated': isFormValid && inputValue.length > 2 }"novalidate><h3id="cardsInputLabel"for="cardsInput"class="form-label">Enter Your Cards</h3><divclass="input-group"><inputid="cardsInput"aria-describedby="cardsInputLabel"x-model="inputValue"class="form-control":class="{ 'is-valid': isFormValid && inputValue.length > 2, 'is-invalid': !isFormValid && inputValue.length > 2 }"maxlength="206"@keyup.debounce="validateCardsInput()"placeholder="e.g., 2S TC 4S QD KH 5S 9S ...":disabled="$store.global.solvingInProgress"><buttonid="cardsInputButton"type="submit"class="btn btn-outline-primary":disabled="!isFormValid || $store.global.solvingInProgress">Solve</button></div><divclass="mb-3"><templatex-for="msg in validMessages"><divclass="valid-feedback":class="{ 'd-block': validCards.length > 0 }"x-text="msg"></div></template><templatex-for="msg in invalidMessages"><divclass="invalid-feedback":class="{ 'd-block': invalidMessages.length > 0 && inputValue.length > 2 }"x-te