Difference between revisions of "Problema da memória transacional"
(→Dificuldade Única) |
(→Dificuldade Única) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
== Dificuldade Única == | == Dificuldade Única == | ||
− | Considere um sistema hipotético de | + | 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 (""). | ||
Line 7: | Line 7: | ||
*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. | *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. | *B, indicando o início de uma transação. | ||
− | *R, indicando que a última transação aberta ser desfeita. | + | *R, indicando que a última transação aberta deve ser desfeita. |
*C, indicando que a última transação aberta deve ser efetivada. | *C, indicando que a última transação aberta deve ser efetivada. | ||
Latest revision as of 14:11, 15 July 2009
Contents
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", "", "", ... }