Pular para o conteúdo principal

Venture

Esse é uma breve análise sobre a carta Venture.


Tradução livre...:  Tesouro \$1. Quando você joga isso, revele as cartas do seu deck até que você revele um treasure. Discarte as outras cartas. Jogue aquele tesouro.

Como descrito, Venture fornece \$1 + o valor do próximo tesouro a ser revelado. Inicialmente com Coopers, Venture fornece basicamente \$2. A questão inicial que levanto é, qual o valor que 4 Ventures fornecem?  Num jogo de Big Money, qual a proporção ideal de Golds e Ventures  que um deck poderia ter?

Bom, minha solução proposta é considerar as seguintes simplificações:
1) O valor fornecido por esse Treasure é obviamente aleatório. Iremos investigar o caso do valor médio.
2) Iremos desprezar o fato de não haver  um "próximo tesouro".

No caso de apenas um Venture, o valor médio fornecido por ele é \$1 + o valor médio dos Treasures do Deck. Para os demais Ventures podemos calcular com a seguinte recursão.

Seja $V$ é a função que mapeia o índice com o valor do Venture, $M$ a função de valor médio das cartas pelo número de Ventures.
Por exemplo, considere $G$, a quantidade de Golds e $C$ a quantidade de Coppers no deck.


\begin{equation*}
M(0) = \frac{3G + C}{G + C}
\end{equation*}

O próximo venture fornecerá (em média)

\begin{equation*}
V(1) = 1 + M(0)
\end{equation*}

... o que mudará o valor médio dos Treasures do Deck para...

\begin{equation*}
M(1) = \frac{(V(1) + M(0).(G+C)}{G+C+1}
\end{equation*}

De forma geral...

\begin{equation*}
M(n) = \frac{V(n) + M(n-1).(G+C+n-1)}{G+C+n}
\end{equation*}

Não é bacana resolver essa recursão. E dado que a série é discreta, aqui um programinha que simula o problema. O programa a seguir imprime uma matriz M(g,n) do valor médio dos Tresures do Deck, onde g é a quantidade de Golds no deck - 1 e n a quantidade de ventures -1 em função de c (quantidade de coppers).
require 'matrix'
args = ARGV.map{|arg| Integer(arg)}
class Venture
  
  def initialize(n=100,g=100, c=7)
    @c = c
    @venture = Array.new(n) { Array.new(g) {-1}}
  end
  
  def print(n, g)
    n.times{ |i|
      g.times { |j|
        memoized_value(i, j)
      }
    }
    n.times{ |i|
      line = ""
      g.times { |j|
        line << "#{1.0 * @venture[i][j]/ (i + j + @c)} "
      }
      puts line 
    }
  end
    
  def memoized_value(n, g)
    @venture[n][g] = value(n,g) if @venture[n][g] == -1
    @venture[n][g]  
  end
  
  def value(n,g)
    if (n == 0)
     3*g + @c
    else
     1 + 1.0 * value(n-1, g)*(n+g+@c)/(n+g+@c -1)
    end
  end
end
Venture.new(*args).print(args[0],args[1])
Os resultados obtidos obviamente variam com a quantidade de Coppers no Deck. Quanto maior a média, mais eficiente os Ventures serão em relação aos Golds.

Cenário com 7 Coppers
Cenário com 3 Coppers
Cenário com 1 Copper

Comentários

Postagens mais visitadas deste blog

Pequeno manual do ócio em terras alemãs

  Pequeno manual do ócio em terras alemãs Como Lei alemã favorece aproveitadoras (e alguns aproveitadores que nunca tive o desprazer de conhecer)   Há algumas vias pelas quais pessoas de países em desenvolvimento migram para países como a Alemanha.   Por exemplo, é sabido que países desenvolvidos sofrem de escassez de mão-de-obra qualificada. Por esse motivo, países como a Alemanha dispõe vistos "especiais" para profissionais em demanda. Esse é o conceito do Blaukart (Blue Card) que na Alemanha se destina a profissionais salário anual seja superior a 55 mil euros ou 43 mil no caso de profissionais de áreas em alta demanda. Não há como recrutar essa mão-de-obra sem que a família desses profissionais também possa ser relocada. Então esses profissionais e seus familiares são relocados.   Além de se qualificar para essas vagas em demanda, ou ser parte direta da família qualificada, outra via possível para a imigração para o território alemão é através do matrimôni

The escape of blue eyed vampires (answer)

The island of blue eyed vampires (answer) An initial idea Each one needs to figure out if him/herself is blue eyed. They assume having blue eyes and see how the others react. A technical details There are some variations to formalize this problem using different type of logic: modal logic, temporal logic, Public Announcement Logic and so on. I believe that those kind of prove are tedious to write and read. For now, I will write a sketch to a prove but I belive the best way to prove is using an algorimthm what basically, it would be an adaptation of DPLL algorithm (Davis–Putnam–Logemann–Loveland) that uses dedutive reasoning and prove by contraction. Legend \[\begin{matrix} BlueEyed(X) :X \text{ is blue eyed.} \\ Leave(X) :X \text{ leaves.} \\ O(y) :y \text{ holds at the next (temporal) state.} \end{matrix}\] In this temporal simplified logic, we have a set of state that holds the in- formation of days, \(W = \{d_0, d_1, d_2, d3 \ldots , d_n\}\) and transition \(S : W \rightarrow

Answering: top reasons I hate living in Brazil

Yes, some guys shared a teasing topic about “Top reasons why I hate living in Brazil”: http://www.gringoes.com/forum/forum_posts.asp?TID=17615&PN=1&title=top-reasons-i-hate-living-in-brazil What is the point here? The whole text is loaded of cliclés, people that you will hardly find, etc most of time just pissing people off.   I don’t think Brazil is the best country in the world. Also, I don’t think Brazilians don’t make mistakes. Actually we do all the time but most of us really care about our mistakes specially those were pointed out. Some feel like an expatriate, alien in own country. Others reflect about how we could improve. Others  simply don’t accept teases from John Does. So, I’m actually truly bothered with people believing in a bunch of false statements (specially Brazilians) or supporting some cynical arguments disguised “sincere” criticisms . Yes, I make mistakes all the time, and as most of Brazilians, I don’t speak English. However, I will