Last active
December 12, 2024 00:22
-
-
Save vdeemann/f910d8741ef011c11c95b961bc858b96 to your computer and use it in GitHub Desktop.
Revisions
-
vdeemann revised this gist
Dec 12, 2024 . 1 changed file with 18 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,18 @@ defmodule Chop do def guess(actual, range = low..high//_) do guess = div(low+high, 2) IO.puts "Is it #{guess}?" _guess(actual, guess, range) end defp _guess(actual, actual, _), do: IO.puts "Yes, it's #{actual}" defp _guess(actual, guess, _..high//_) when guess < actual, do: guess(actual, guess+1..high) defp _guess(actual, guess, low.._//_) when guess > actual, do: guess(actual, low..guess-1) end -
vdeemann revised this gist
Dec 11, 2024 . 1 changed file with 7 additions and 11 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,29 +1,25 @@ defmodule Chop do def guess(actual, range), do: guess_conditional(actual, range, div(Range.size(range),2)) def guess_conditional(actual, range, current_guess) do if actual > 0 and actual <= Range.size(range) do guess_helper(actual, range, current_guess) end end def guess_helper(actual, _, current_guess) when current_guess == actual do "#{current_guess}" end def guess_helper(actual, range, current_guess) when current_guess > actual do IO.puts "Is it #{current_guess} >" low.._//_ = range range = low..(current_guess) #IO.puts "#{range.first}..#{range.last}" guess_helper(actual, range, div(current_guess+low,2)) end def guess_helper(actual, range, current_guess) when current_guess < actual do IO.puts "Is it #{current_guess} <" _..high//_ = range range = (current_guess)..high #IO.puts "#{range.first}..#{range.last}" guess_helper(actual, range, div(current_guess+high+1,2)) end end -
vdeemann revised this gist
Dec 11, 2024 . 1 changed file with 10 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,14 @@ defmodule Chop do def guess(actual, range), do: guess_conditional(actual, range, div(Range.size(range),2)) def guess_conditional(actual, range, current_guess) do if Range.size(range) == actual do "#{actual}" else if actual > 0 and actual <= Range.size(range) do helper_guess(actual, range, current_guess) end end end def helper_guess(actual, _, current_guess) when current_guess == actual do "#{current_guess}" end -
vdeemann revised this gist
Dec 4, 2024 . 1 changed file with 1 addition and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,3 +1,4 @@ # Chop.guess(1000,1..1000) edge case causing infinite recursion defmodule Chop do def guess(actual, range), do: helper_guess(actual, range, div(Range.size(range),2)) def helper_guess(actual, _, current_guess) when current_guess == actual do -
vdeemann created this gist
Dec 4, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,20 @@ defmodule Chop do def guess(actual, range), do: helper_guess(actual, range, div(Range.size(range),2)) def helper_guess(actual, _, current_guess) when current_guess == actual do "#{current_guess}" end def helper_guess(actual, range, current_guess) when current_guess > actual do IO.puts "Is it #{current_guess} >" low.._//_ = range range = low..(current_guess) #IO.puts "#{range.first}..#{range.last}" helper_guess(actual, range, div(current_guess+low,2)) end def helper_guess(actual, range, current_guess) when current_guess < actual do IO.puts "Is it #{current_guess} <" _..high//_ = range range = (current_guess)..high #IO.puts "#{range.first}..#{range.last}" helper_guess(actual, range, div(current_guess+high,2)) end end