Difference between revisions of "Problema da memória transacional"

From AdonaiMedrado.Pro.Br
Jump to: navigation, search
(Dificuldade Única)
(Dificuldade Única)
 
Line 1: Line 1:
 
== Dificuldade Única ==
 
== Dificuldade Única ==
Considere um sistema hipotético de memórica no qual cada posição de memória está identificada por uma letra maiúscula do alfabeto (assim, existem 26 posições possíveis de armazenamento). Assuma que o trabalho de escrita é executado em um esquema transacional (tudo ou nada).
+
Considere um sistema hipotético de memória no qual cada posição de memória está identificada por uma letra maiúscula do alfabeto (assim, existem 26 posições possíveis de armazenamento). Assuma que o trabalho de escrita é executado em um esquema transacional (tudo ou nada).
  
 
Você deverá fazer uma classe MemoriaTransacional com um método público ExecutarEscrita que deverá executar a escrita transacional considerando uma memória inicialmente vazia. O método deve retornar um String[] que deverá conter 26 elementos cada um com o conteúdo da memória, sendo o primeiro elemento referente à posição A, o segundo à B e assim por diante. Posições vazias devem ser identificadas por uma string sem caracteres ("").
 
Você deverá fazer uma classe MemoriaTransacional com um método público ExecutarEscrita que deverá executar a escrita transacional considerando uma memória inicialmente vazia. O método deve retornar um String[] que deverá conter 26 elementos cada um com o conteúdo da memória, sendo o primeiro elemento referente à posição A, o segundo à B e assim por diante. Posições vazias devem ser identificadas por uma string sem caracteres ("").

Latest revision as of 14:11, 15 July 2009

Dificuldade Única

Considere um sistema hipotético de memória no qual cada posição de memória está identificada por uma letra maiúscula do alfabeto (assim, existem 26 posições possíveis de armazenamento). Assuma que o trabalho de escrita é executado em um esquema transacional (tudo ou nada).

Você deverá fazer uma classe MemoriaTransacional com um método público ExecutarEscrita que deverá executar a escrita transacional considerando uma memória inicialmente vazia. O método deve retornar um String[] que deverá conter 26 elementos cada um com o conteúdo da memória, sendo o primeiro elemento referente à posição A, o segundo à B e assim por diante. Posições vazias devem ser identificadas por uma string sem caracteres ("").

O método ExecutarEscrita receberá como parâmetro um String[] na qual cada elemento terá um dos seguintes formatos:

  • L=V, sendo L uma letra maiúscula do alfabeto e V uma valor qualquer (numérico ou alfanumérico). Esta simbologia indica que deve-se armazenar na posição de memória L o valor V.
  • B, indicando o início de uma transação.
  • R, indicando que a última transação aberta deve ser desfeita.
  • C, indicando que a última transação aberta deve ser efetivada.

Atenção:

  • O método deve considerar a existência de no mínimo uma transação que engloba todos os elementos do String[] passado como parâmetro.

Você pode desconsiderar a possibilidade de erros na entrada.

Exemplo 1

Entrada

{ "A=28" }

Saída

{ "28", "", "", .... }

Exemplo 2

Entrada

{ "B", "A=28", "B", "A=29", "C", "A=50", "R", "B=50" }

Saída

{ "", "50", "", "", ... }

Exemplo 3

Entrada

{ "B", "A=25", "B", "A=29", "R", "C", "B=50" }

Saída

{ "25", "50", "", "", ... }