Author Topic: Wordle - a new word game  (Read 9792 times)

0 Members and 1 Guest are viewing this topic.

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Wordle - a new word game
« Reply #15 on: January 11, 2022, 11:07:37 pm »
Now, for version 4, it needs to have a difficulty screen where you choose words from 3 to 10 letters.

Personally, I imagine a game with 3 letter words would be hard as heck to guess, whereas s 10-letter word would be relatively simple (counter-intuitively).  Three letters, you have less chance to get a letter on a guess, and there's soooo many 3-letter words with minute variance in them!  Bat, but, bot, bit, bet... even if you get the b and t, there's 5 unique choices for the middle letter alone!  10-letter words, on the other hand, have more chances to guess a letter from them, and a much smaller pool of words to try and march from.
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Wordle - a new word game
« Reply #16 on: January 12, 2022, 05:19:53 am »
OK version 4 you chose number of letters / number of guesses for your level, why not :)

For 3 letter words with 3 word guesses: pie, tau, soy
you learn what vowels you have plus 3 common consonants, likely hit with 2 of 3.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Wordle - a new word game
« Reply #17 on: January 12, 2022, 08:05:28 am »
OK to prepare for Wordle 4, I cleaned out the unixdict.txt of 757 words that had punctuation or digits in them to Clean_Dict.txt. Then in 2nd part of code, Make N Letter Word Files.bas below, I made 10 files according to word length. Included with the code for making those files I have listed the word counts for each file in comments at the end.

Code: QB64: [Select]
  1. ' Make "Clean_Dict.txt" pure letters only b+ 2022-01-12
  2. DefLng A-Z
  3. Open "unixdict.txt" For Input As #1
  4. Open "Clean_Dict.txt" For Output As #2
  5.     Input #1, w$
  6.     lw = Len(w$)
  7.     If (lw > 2) And (lw < 13) Then ' word lengths 3 to 12, makes 9 files
  8.         i = 1: OK = -1
  9.         While i <= lw ' check for pure letter words
  10.             If (Asc(w$, i) < 97) Or (Asc(w$, i) > 122) Then OK = 0: Exit While
  11.             i = i + 1
  12.         Wend
  13.         If OK Then Print #2, w$
  14.     End If
  15. Print "Clean_Dict.txt, file ready."
  16.  
  17. ' Note: Clean_Dict.txt has 757 words less than unixdict.txt
  18.  
  19. ' Part 2 make 9 N_Letter_Word.txt files
  20. For N = 3 To 12
  21.     Open _Trim$(Str$(N)) + "_Letter_Words.txt" For Output As #N
  22. Open "Clean_Dict.txt" For Input As #1
  23.     Input #1, w$
  24.     Select Case Len(w$)
  25.         Case 3: Print #3, w$
  26.         Case 4: Print #4, w$
  27.         Case 5: Print #5, w$
  28.         Case 6: Print #6, w$
  29.         Case 7: Print #7, w$
  30.         Case 8: Print #8, w$
  31.         Case 9: Print #9, w$
  32.         Case 10: Print #10, w$
  33.         Case 11: Print #11, w$
  34.         Case 12: Print #12, w$
  35.     End Select
  36. Print "10 N_letter_Words.txt files should be ready."
  37.  
  38. ' N letters - number of words in file
  39. ' 3 - 753
  40. ' 4 - 2176
  41. ' 5 - 3145   the other 5 Letter Words W3.txt had u.s.a that was removed with above code
  42. ' 6 - 3852
  43. ' 7 - 4042
  44. ' 8 - 3608
  45. ' 9 - 3088
  46. ' 10 - 1971
  47. ' 11 - 1120
  48. ' 12 - 592
  49.  
  50.  

Reading through 3_Letter_Words.txt you will find non words like aaa or nne so be glad you can view the dictionary as you play the game! :)

Again I remind that unixdict.txt is in the zip of post at the start of this thread.

OK onto mod Wordle 4...

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Wordle - a new word game
« Reply #18 on: January 12, 2022, 09:30:02 am »
OK version 4 you chose number of letters / number of guesses for your level, why not :)

For 3 letter words with 3 word guesses: pie, tau, soy
you learn what vowels you have plus 3 common consonants, likely hit with 2 of 3.

My point is the difficulty of getting the last letter.

Lets say you guess SOY.  OY is correct and in the proper place -- that's guess #1.

Boy
Coy
Foy
Goy
Hoy
Joy
Roy
Soy
Toy

You have 4 guesses now to determine which of those 8 letters go into the first slot.

You could try RuT to rule out R and T.
HoG.
JiF

But if none of those work, you're still stuck with 2 choices B and C for the last letter, giving you a 50% chance to win, even if you play your cards perfect.

Or: bat, cat, dat, fat, gat, hat,  kat, lat, mat, nat, pat, rat, sat, tat, vat.... 15 choices ending in AT,...  :P


https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline Statsman1

  • Newbie
  • Posts: 36
  • I'm just a jerk, but a hero is what I want to be.
    • View Profile
Re: Wordle - a new word game
« Reply #19 on: January 12, 2022, 10:21:10 am »
Maybe 3 letters in 6 guesses is too hard, due to the shortness of the word, the number of 3-letter words with common letters, and the overall number of combinations?

5 letters AND being forced to use real words to guess is important, I think, to being able to get to the word in 6 guesses.  I admit I got a Wordle on the 2nd guess the other day, but that was remarkably lucky, I usually get there between 3 and 5 guesses. 

Using openers like STARE, CLOUD and MINTY burn up 14 unique letters - all 6 vowels and most popular consonants in 3 guesses - I feel like, by that point, there is no way you cannot get it by 6 guesses.  Logic plays a huge part in it after that.

Using 3 letter words doesn’t get enough letters out there in the first few guesses to hope to arrive, logically, at the word by the end of 6 guesses, as mentioned by @SMcNeill, especially if the word chosen has a ton of first-letters that go with the last two - ?at, ?ar, ?en…there are loads of those.  It becomes a real roll of the dice.

Maybe 5 letters is the sweet spot between “relying on luck” and “reasonable number of guesses required”?
Good decisions come from experience.
Experience comes from bad decisions.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Wordle - a new word game
« Reply #20 on: January 12, 2022, 10:33:14 am »
Here it is, the answer to all Steve's challenges (so far):

Wordle 4 with advanced level options:
Code: QB64: [Select]
  1. _Title "Wordle 4" ' b+ 2022-01-12 as Steve suggested add option to choose how many letters, how many guesses
  2.  
  3. ' b+ 2022-01-09 Wordle 2: this version you have to select words from word list for your guess
  4. '2022-01-10 working but selecting words from wordlist is really slow, need to allow letters to jump up and down the list faster!
  5. ' Today we will select word from opened text editor
  6. ' 1) copy word to clipboard
  7. ' 2) signal this program you've got the new word loaded in clipboard
  8. ' Get rid of the ' words in "5 Letter Words.txt" file, too unexpected. So rewrite the file builder from unixdict.txt OK 9 words removed.
  9.  
  10. ' 2022-01-10 Wordle 3: allow repeated letters (make it even harder! to play and code?)
  11. ' Revise "Make 5 Letter Words W3.bas" code to rebuild "5 Letter Words W3.txt" with words with repeating letters.
  12.  
  13. ' 2022-01-12 Worde 4: prep word files by running, Make N Letter Word files.bas, (posted at forum already.)
  14.  
  15. '  All the variables use here
  16. Dim As Long f, NLetters, NGuesses, topWord, printRow, nGuess, hits, letter, p
  17. '  ReDim colorCode(1 To NLetters)
  18. Dim wordFile$, answer$, guess$, k$, blank$
  19.  
  20. f = _LoadFont("arial.ttf", 24, "MONOSPACE") ' a nice font for displaying Game letters with color
  21. Screen _NewImage(600, 400, 32) ' leave room for Editor window next to this QB64 app
  22. _ScreenMove 200, 200
  23. Color _RGB32(200, 200, 200), _RGB32(0, 0, 0) ' not too bright white on black for normal print
  24. '      123456789012345678901234567890123456789012345678901234567890123456789012345
  25. Locate 8, 1
  26. Print "                          The Skinny on Wordle:"
  27. Print "     In Standard Wordle Game, you get 6 tries to guess a 5 letter word.    "
  28. Print "          A letter color coded yellow is right letter wrong place."
  29. Print "          A letter color coded green is right letter right place."
  30. Print "                 ...zzz  means to press a key to continue."
  31. Print "              Press <a> to run an advanced level Wordle Game,"
  32. Print "                  any other to play Standard Wordle Game."
  33. k$ = InKey$
  34. While Len(k$) = 0: k$ = InKey$: Wend
  35. If k$ = "a" Then 'advanced level
  36.     Cls
  37.     lAgain:
  38.     Input "Please enter the number of letters (3-12) of words to play "; NLetters
  39.     If NLetters < 3 Or NLetters > 12 Then GoTo lAgain
  40.     gAgain:
  41.     Input "Please enter the number of guesses (2-10) to allow yourself "; NGuesses
  42.     If NGuesses < 2 Or NGuesses > 10 Then GoTo gAgain
  43.     _Title "Wordle 4 Advanced Options:" + Str$(NLetters) + " Letter Words with" + Str$(NGuesses) + " guesses allowed."
  44.     NLetters = 5: NGuesses = 6
  45. wordFile$ = _Trim$(Str$(NLetters)) + "_Letter_Words.txt"
  46. Dim dict(1 To 10000) As String ' oversized array to load word list
  47. Open wordFile$ For Input As #1 ' W3 version allows repeated letters, allot of 5 letter 1st names in here
  48.     topWord = topWord + 1
  49.     Input #1, dict(topWord)
  50. Shell _DontWait Chr$(34) + wordFile$ + Chr$(34)
  51.  
  52. Do ' again new round
  53.     Cls
  54.     Locate 24, 6: Print "You have to click the QB64 app to get focus back into the app.";
  55.     answer$ = dict(Int(Rnd * topWord) + 1) ' pick new word to guess
  56.     printRow = 0 ' reset for round
  57.     For nGuess = 1 To NGuesses ' allowed 6 guesses (in Standard Game)
  58.         hits = 0 ' how many letters are dead right? reset
  59.         printRow = printRow + 1 ' track left print line for inputs display mostly
  60.         ' here we are to select a word from word list in the Editor we opened and copy it to clipboard
  61.         Locate 23, 3: Print "Select a word from Editor and copy to clipboard, press enter when done."
  62.         k$ = InKey$
  63.         While k$ <> Chr$(13): k$ = InKey$: Wend
  64.         guess$ = _Trim$(_Clipboard$)
  65.         If guess$ = "" Then System
  66.         Locate 23, 1: Print Space$(75);
  67.         Locate printRow + 3, 10: Print nGuess; guess$
  68.         _Font f&
  69.         blank$ = answer$ ' we use blank to remove letters as we assign colors
  70.         ReDim colorCode(1 To NLetters)
  71.         For letter = 1 To NLetters
  72.             If Mid$(answer$, letter, 1) = Mid$(guess$, letter, 1) Then
  73.                 hits = hits + 1
  74.                 Mid$(blank$, letter, 1) = " " ' remove green letters taken by direct hits
  75.                 colorCode(letter) = 3
  76.             End If
  77.         Next
  78.         For letter = 1 To NLetters
  79.             If colorCode(letter) <> 3 Then
  80.                 p = InStr(blank$, Mid$(guess$, letter, 1))
  81.                 If p > 0 Then
  82.                     colorCode(letter) = 2
  83.                     Mid$(blank$, p, 1) = " " ' remove so can't color again
  84.                 End If
  85.             End If
  86.         Next
  87.         For letter = 1 To NLetters ' now to display our colorful feedback about the guess
  88.             Locate nGuess + 1, letter + 13
  89.             If colorCode(letter) = 3 Then
  90.                 Color _RGB32(0, 0, 0), _RGB32(0, 128, 0)
  91.             ElseIf colorCode(letter) = 2 Then
  92.                 Color _RGB32(0, 0, 0), _RGB32(255, 255, 0)
  93.             Else
  94.                 Color _RGB32(200, 200, 200), _RGB32(0, 0, 0)
  95.             End If
  96.             Print Mid$(guess$, letter, 1)
  97.         Next
  98.         _Font 16
  99.         Color _RGB32(200, 200, 200), _RGB32(0, 0, 0)
  100.         If hits = NLetters Then Locate 13, 45: Print "You got it! ...zzz": Sleep: GoTo skip
  101.     Next
  102.     Sound 50, 4
  103.     Locate 16, 38: Print "The word was "; answer$; "  ...zzz"
  104.     Sleep
  105.     skip:
  106.     _Font 16
  107.  

 
Advanced option wordle.PNG
 

 
Wordle 4.PNG


 
12 letter Wordle.PNG

« Last Edit: January 12, 2022, 10:47:53 am by bplus »

Offline Dimster

  • Forum Resident
  • Posts: 500
    • View Profile
Re: Wordle - a new word game
« Reply #21 on: January 12, 2022, 10:48:48 am »
This could morph into the new Babble. It would be interesting to guess the English word PIE for the Russian word meaning PIE, or Italian for PIE, or French for PIE etc. Pie is not a good example as the English versions has duplicate meanings, so lets go with WIND .... crap that a duplicate as well ... maybe morphing to the new Babble is a stretch.

Offline Statsman1

  • Newbie
  • Posts: 36
  • I'm just a jerk, but a hero is what I want to be.
    • View Profile
Re: Wordle - a new word game
« Reply #22 on: January 12, 2022, 11:15:42 am »
Love it!  @bplus - for a guy who never played it, you are killing it here!!  :)
Good decisions come from experience.
Experience comes from bad decisions.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Wordle - a new word game
« Reply #23 on: January 12, 2022, 11:27:12 am »
Thanks @Statsman1

@Dimster I will look into Babble, as possible option or more ideas.

I have a fixed a couple of feedback Locate's to fit on screen with maximun letters 12 and maximum guesses 10 for the advanced levels:
Code: QB64: [Select]
  1. _Title "Wordle 4" ' b+ 2022-01-12 as Steve suggested add option to choose how many letters, how many guesses
  2.  
  3. ' b+ 2022-01-09 Wordle 2: this version you have to select words from word list for your guess
  4. '2022-01-10 working but selecting words from wordlist is really slow, need to allow letters to jump up and down the list faster!
  5. ' Today we will select word from opened text editor
  6. ' 1) copy word to clipboard
  7. ' 2) signal this program you've got the new word loaded in clipboard
  8. ' Get rid of the ' words in "5 Letter Words.txt" file, too unexpected. So rewrite the file builder from unixdict.txt OK 9 words removed.
  9.  
  10. ' 2022-01-10 Wordle 3: allow repeated letters (make it even harder! to play and code?)
  11. ' Revise "Make 5 Letter Words W3.bas" code to rebuild "5 Letter Words W3.txt" with words with repeating letters.
  12.  
  13. ' 2022-01-12 Worde 4: prep word files by running, Make N Letter Word files.bas, (posted at forum already.)
  14. ' fix some feedback Locates rfor maximum guesses and letters
  15.  
  16. '  All the variables use here
  17. Dim As Long f, NLetters, NGuesses, topWord, printRow, nGuess, hits, letter, p
  18. '  ReDim colorCode(1 To NLetters)
  19. Dim wordFile$, answer$, guess$, k$, blank$
  20.  
  21. f = _LoadFont("arial.ttf", 24, "MONOSPACE") ' a nice font for displaying Game letters with color
  22. Screen _NewImage(600, 400, 32) ' leave room for Editor window next to this QB64 app
  23. _ScreenMove 200, 200
  24. Color _RGB32(200, 200, 200), _RGB32(0, 0, 0) ' not too bright white on black for normal print
  25. '      123456789012345678901234567890123456789012345678901234567890123456789012345
  26. Locate 8, 1
  27. Print "                          The Skinny on Wordle:"
  28. Print "     In Standard Wordle Game, you get 6 tries to guess a 5 letter word.    "
  29. Print "          A letter color coded yellow is right letter wrong place."
  30. Print "          A letter color coded green is right letter right place."
  31. Print "                 ...zzz  means to press a key to continue."
  32. Print "              Press <a> to run an advanced level Wordle Game,"
  33. Print "                  any other to play Standard Wordle Game."
  34. k$ = InKey$
  35. While Len(k$) = 0: k$ = InKey$: Wend
  36. If k$ = "a" Then 'advanced level
  37.     Cls
  38.     lAgain:
  39.     Input "Please enter the number of letters (3-12) of words to play "; NLetters
  40.     If NLetters < 3 Or NLetters > 12 Then GoTo lAgain
  41.     gAgain:
  42.     Input "Please enter the number of guesses (2-10) to allow yourself "; NGuesses
  43.     If NGuesses < 2 Or NGuesses > 10 Then GoTo gAgain
  44.     _Title "Wordle 4 Advanced Options:" + Str$(NLetters) + " Letter Words with" + Str$(NGuesses) + " guesses allowed."
  45.     NLetters = 5: NGuesses = 6
  46. wordFile$ = _Trim$(Str$(NLetters)) + "_Letter_Words.txt"
  47. Dim dict(1 To 10000) As String ' oversized array to load word list
  48. Open wordFile$ For Input As #1 ' W3 version allows repeated letters, allot of 5 letter 1st names in here
  49.     topWord = topWord + 1
  50.     Input #1, dict(topWord)
  51. Shell _DontWait Chr$(34) + wordFile$ + Chr$(34)
  52.  
  53. Do ' again new round
  54.     Cls
  55.     Locate 24, 6: Print "You have to click the QB64 app to get focus back into the app.";
  56.     answer$ = dict(Int(Rnd * topWord) + 1) ' pick new word to guess
  57.     printRow = 0 ' reset for round
  58.     For nGuess = 1 To NGuesses ' allowed 6 guesses (in Standard Game)
  59.         hits = 0 ' how many letters are dead right? reset
  60.         printRow = printRow + 1 ' track left print line for inputs display mostly
  61.         ' here we are to select a word from word list in the Editor we opened and copy it to clipboard
  62.         Locate 23, 3: Print "Select a word from Editor and copy to clipboard, press enter when done."
  63.         k$ = InKey$
  64.         While k$ <> Chr$(13): k$ = InKey$: Wend
  65.         guess$ = _Trim$(_Clipboard$)
  66.         If guess$ = "" Then System
  67.         Locate 23, 1: Print Space$(75);
  68.         Locate printRow + 3, 10: Print nGuess; guess$
  69.         _Font f&
  70.         blank$ = answer$ ' we use blank to remove letters as we assign colors
  71.         ReDim colorCode(1 To NLetters)
  72.         For letter = 1 To NLetters
  73.             If Mid$(answer$, letter, 1) = Mid$(guess$, letter, 1) Then
  74.                 hits = hits + 1
  75.                 Mid$(blank$, letter, 1) = " " ' remove green letters taken by direct hits
  76.                 colorCode(letter) = 3
  77.             End If
  78.         Next
  79.         For letter = 1 To NLetters
  80.             If colorCode(letter) <> 3 Then
  81.                 p = InStr(blank$, Mid$(guess$, letter, 1))
  82.                 If p > 0 Then
  83.                     colorCode(letter) = 2
  84.                     Mid$(blank$, p, 1) = " " ' remove so can't color again
  85.                 End If
  86.             End If
  87.         Next
  88.         For letter = 1 To NLetters ' now to display our colorful feedback about the guess
  89.             Locate nGuess + 1, letter + 13
  90.             If colorCode(letter) = 3 Then
  91.                 Color _RGB32(0, 0, 0), _RGB32(0, 128, 0)
  92.             ElseIf colorCode(letter) = 2 Then
  93.                 Color _RGB32(0, 0, 0), _RGB32(255, 255, 0)
  94.             Else
  95.                 Color _RGB32(200, 200, 200), _RGB32(0, 0, 0)
  96.             End If
  97.             Print Mid$(guess$, letter, 1)
  98.         Next
  99.         _Font 16
  100.         Color _RGB32(200, 200, 200), _RGB32(0, 0, 0)
  101.         If hits = NLetters Then Locate 15, 5: Print "You got it! ...zzz": Sleep: GoTo skip
  102.     Next
  103.     Sound 50, 4
  104.     Locate 16, 2: Print "The word was "; answer$; "  ...zzz"
  105.     Sleep
  106.     skip:
  107.     _Font 16
  108.  

Unless Beta testers find more things, I will post whole package in one zip for Best Answer a little later.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Wordle - a new word game
« Reply #24 on: January 12, 2022, 03:16:26 pm »
This could morph into the new Babble. It would be interesting to guess the English word PIE for the Russian word meaning PIE, or Italian for PIE, or French for PIE etc. Pie is not a good example as the English versions has duplicate meanings, so lets go with WIND .... crap that a duplicate as well ... maybe morphing to the new Babble is a stretch.

@Dimster did you babble the word game Boggle?

Offline Dimster

  • Forum Resident
  • Posts: 500
    • View Profile
Re: Wordle - a new word game
« Reply #25 on: January 13, 2022, 10:30:33 am »
Boggle? Had to look that one up....1972....pre digital era. Can't say I ever played it but I do recall a square plastic filled with chicklets with numbers on them. The idea was to get the numbers in order. A 2d version of the 3d rubric cube filled with colors.

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Wordle - a new word game
« Reply #26 on: January 13, 2022, 11:48:10 am »
Boggle? Had to look that one up....1972....pre digital era. Can't say I ever played it but I do recall a square plastic filled with chicklets with numbers on them. The idea was to get the numbers in order. A 2d version of the 3d rubric cube filled with colors.

The "chicklets" are die with Letters in Boggle:
https://qb64forum.alephc.xyz/index.php?topic=4570.0

@Dimster maybe you can find a good link of what you are talking about?

Offline SMcNeill

  • QB64 Developer
  • Forum Resident
  • Posts: 3972
    • View Profile
    • Steve’s QB64 Archive Forum
Re: Wordle - a new word game
« Reply #27 on: January 13, 2022, 02:06:18 pm »
From my memory of Boggle, the game pieces were made like scrabble, but with the bottom hollowed out, making them look more like the keys on a keyboard, if you've ever pulled those out from the board.

The purpose was to allow for words to build over another...

A vertical word might be:

C
H
E
A
T

For the next turn, the other person might want to spell the word PEON....  A valid way to do that was to:

C
H
E
A
PEON

The hollow bottom P would stack on top of the T and overwrite it, leaving both words "Cheap" and "Peon" to score off from...

Similar to Scrabble, but with that one main word-building difference.
https://github.com/SteveMcNeill/Steve64 — A github collection of all things Steve!

Offline STxAxTIC

  • Library Staff
  • Forum Resident
  • Posts: 1091
  • he lives
    • View Profile
Re: Wordle - a new word game
« Reply #28 on: January 13, 2022, 02:09:57 pm »
This game was called UpWords. Boggle was different.

 
sssssss.PNG
You're not done when it works, you're done when it's right.

Offline Statsman1

  • Newbie
  • Posts: 36
  • I'm just a jerk, but a hero is what I want to be.
    • View Profile
Re: Wordle - a new word game
« Reply #29 on: January 13, 2022, 02:16:38 pm »
Boggle was 16 6-sided cubes (each side had a letter) that were scrambled (shaken up) and then settled into a 4x4 grid.  (Or, later, 5x5) The idea was to make as many unique words out of the cubes that were touching each other, using each cube once, before the timer expired.  Longer word = more points.

Unique because if you found it and your opponent did too, nobody got credit for it.
boggle.jpg
* boggle.jpg (Filesize: 289.62 KB, Dimensions: 720x1000, Views: 107)
« Last Edit: January 13, 2022, 02:50:44 pm by Statsman1 »
Good decisions come from experience.
Experience comes from bad decisions.