Parse guesses instead of hardcoding them
This commit is contained in:
		
							parent
							
								
									e6df0633bf
								
							
						
					
					
						commit
						2c11ce9efa
					
				| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					import { useState } from 'react'
 | 
				
			||||||
import { Page } from '../../components/page'
 | 
					import { Page } from '../../components/page'
 | 
				
			||||||
import { Title } from '../../components/title'
 | 
					import { Title } from '../../components/title'
 | 
				
			||||||
// From https://github.com/lynn/hello-wordl
 | 
					// From https://github.com/lynn/hello-wordl
 | 
				
			||||||
| 
						 | 
					@ -11,15 +12,10 @@ export default function Wordle() {
 | 
				
			||||||
  // const dict = dictionary.filter((word) => word.length === WORD_LENGTH)
 | 
					  // const dict = dictionary.filter((word) => word.length === WORD_LENGTH)
 | 
				
			||||||
  const words = targets.filter((word) => word.length === WORD_LENGTH)
 | 
					  const words = targets.filter((word) => word.length === WORD_LENGTH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const pastGuesses: PastGuess[] = [
 | 
					  const [input, setInput] = useState('')
 | 
				
			||||||
    // From https://hellowordl.net/?challenge=aGFyZHk
 | 
					
 | 
				
			||||||
    // { guess: 'sheep', result: 'BYBBB' },
 | 
					  const pastGuesses: PastGuess[] = parsePastGuesses(input)
 | 
				
			||||||
    // { guess: 'butch', result: 'BBBBY' },
 | 
					  const placeholder = 'e.g.\nstage BBYBB\nlucre YYGYY'
 | 
				
			||||||
    // { guess: 'hydra', result: 'GYYYY' },
 | 
					 | 
				
			||||||
    // Answer: hardy
 | 
					 | 
				
			||||||
    { guess: 'snowy', result: 'BBBYB' },
 | 
					 | 
				
			||||||
    { guess: 'wheel', result: 'GYBBB' },
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const valids = validHardMode(words, pastGuesses)
 | 
					  const valids = validHardMode(words, pastGuesses)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,7 +30,12 @@ export default function Wordle() {
 | 
				
			||||||
        Actually for{' '}
 | 
					        Actually for{' '}
 | 
				
			||||||
        <a href="https://hellowordl.net/">https://hellowordl.net/</a>
 | 
					        <a href="https://hellowordl.net/">https://hellowordl.net/</a>
 | 
				
			||||||
        <p>Past guesses:</p>
 | 
					        <p>Past guesses:</p>
 | 
				
			||||||
        <pre>{JSON.stringify(pastGuesses, null, 2)}</pre>
 | 
					        <textarea
 | 
				
			||||||
 | 
					          className="h-32 w-full p-2"
 | 
				
			||||||
 | 
					          value={input}
 | 
				
			||||||
 | 
					          onChange={(e) => setInput(e.target.value)}
 | 
				
			||||||
 | 
					          placeholder={placeholder}
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
        <br />
 | 
					        <br />
 | 
				
			||||||
        <br />
 | 
					        <br />
 | 
				
			||||||
        <p className="text-black">
 | 
					        <p className="text-black">
 | 
				
			||||||
| 
						 | 
					@ -98,11 +99,17 @@ function validHardMode(wordlist: string[], pastGuesses: PastGuess[]) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function parsePastGuesses(pastGuesses: string) {
 | 
					function parsePastGuesses(pastGuesses: string) {
 | 
				
			||||||
  return pastGuesses.split('\n').map((pg) => {
 | 
					  return pastGuesses
 | 
				
			||||||
    const [guess, result] = pg.split(', ')
 | 
					    .split('\n')
 | 
				
			||||||
 | 
					    .map((pg) => {
 | 
				
			||||||
 | 
					      const [guess, result] = pg.split(' ')
 | 
				
			||||||
      return { guess, result }
 | 
					      return { guess, result }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					    .filter(({ guess, result }) => guess && result)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Bad target words: witan, sedum
 | 
					// Bad target words: witan, sedum
 | 
				
			||||||
// TODO: Maybe just use canonical Wordle dictionaries
 | 
					// TODO: Maybe just use canonical Wordle dictionaries
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DEBUG:     { guess: 'lucre', result: 'YYGYY' }
 | 
				
			||||||
 | 
					// Should produce: ulcer
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user