Jump to content
babi.hannah

Problemas com a iteração .each - como posso usa-la corretamente

Recommended Posts

Boa tarde a todos, 

estou aprendendo a programar em Ruby e estou tentando definir um método que retorna se a string é palíndromo sem utilizar laços (for, while, etc).

Utilizei o .each pra poder verificar cada elemento e retirar os caracteres especiais (".", " ", " ' ", etc), pois o método deve ignora-los, retornando assim uma string só com letras. Exemplo:

"Ame o poema" ==> "ameopoema"

 

Meu problema maior é como utilizar o each pra varrer a string. Quando o uso dentro do método ele alega que não existe esse método .each pra classe string. Terei que montar uma classe chamada "string" declarar ele lá dentro? Como posso fazer?

Se alguém puder me ajudar. Obrigada. 

   

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Onaita
      Boa noite, preciso de uma ajuda com o código abaixo:
      - Dentro da variável '$dados' tenho uma array em que o id repete com datas diferentes, preciso descartar uma das duas arrays repetidas com o mesmo 'id', mantendo a de menor data, ou seja, o resultado final seria:
      "Array ( [0] => Array ( [id] => 12 [data] => 2020-07-02 ) , [1] => Array ( [id] => 13 [data] => 2020-06-10 ) ) "
      - já tentei de tudo um pouco a princípio estou trabalhando com a ideia de loop dentro de loop, para varrer e comparar, mas como vcs podem ver estou deixando passar alguma coisa;
      <?php
      $dados =     [array("id" =>12, "data"=>"2020-07-02"),
                  array("id" =>13, "data"=>"2020-06-10"),
                  array("id" =>13, "data"=>"2020-06-15"),
                  array("id" =>12, "data"=>"2020-05-12")];
      $total = count($dados);
      foreach($dados as $item){
          for($i=1; $i < $total; $i++){
              if($item['id'] == $dados[$i]['id']){
                  if(strtotime($item['data']) <= strtotime($dados[$i]['data'])){
                      unset($dados[$i]);
                      $dados = array_values($dados);
                      $total = count($dados);
                      
                  }    
              }    
          }    
      }
      print_r($dados);
      Array ( [0] => Array ( [id] => 12 [data] => 2020-07-02 ) ) //resultado
       
      Se alguém achar o erro, ou uma forma de resolver esse problema ficarei muito agradecido!
      Obrigado e Um grande abrs a todos!
    • By Licht
      Quero um programa que leia vários numeros e informa quantos pares foram digitados. Quando o número 0 (zero) for digitado ele para a execucao. O programa entra num loop e nao funciona como gostaria <?php             $cont= 0;             do {                 echo "<form method='GET' action='exemplo.php'><br/>";                 echo "<h1>Quantidade de numeros pares</h1><br/>";                 echo "<label for='num'>Numero: </label><br/>";                 echo "<input type='number' name='num'/><br/><br/>";                 echo "<input type='submit' value='Verificar'>";                 echo "</form>";                 echo "Contador: $cont";                 $num_verificar = isset($_GET["num"]) ? $_GET["num"] : ' ';                 if($num_verificar%2 == 0)                     $cont ++;             } while ($num_verificar != 0);             echo "Quantidade de numeros pares eh $cont! <br/>"; ?>             
    • By Ross Risso
      Olá pessoal!
      Estou com problemas para inserir as compras no banco de dados.
      até aqui funciona, mas se tendo adicionar outros dados ele não aceita. Só permite adicionar $id e $qtd. Ainda tenho que adicionar o ID do pedido e o valor da mercadoria. Alguém poderia me ajudar?
          <?php   foreach($_SESSION['carrinho'] as $id => $qtd){              $sql = "INSERT INTO tbldetped (MercDetPed, QuantDetPed) VALUES ('$id','$qtd')";         $qr = mysqli_query($conn, $sql);          } ?>
    • By G_Celebrini
      Eu tô no primeiro ano de faculdade e tenho que criar um jogo da velha com as seguintes regras: Desenvolver o Jogo da Velha utilizando matrizes. O jogo deve ser preparado para a interação entre dois usuários. Os usuários deverão escolher os símbolos que utilizarão no jogo. Cada partida deverá ser composta de três rodadas. O resultado final deve considerar que ganhou duas ou três partidas como vencedor. Havendo um empate e uma vitória para cada lado, o sistema deverá propor uma partida final. Caso os usuário declinem desta partida deverá ser considerado empate técnico. Deve haver rotina específica para que os usuários optem pelo abandono do jogo dando, nesse caso, a vitória da rodada ao adversário.
      Eu ainda sou bem iniciante em programação e tenho esse código até agora:
       
      <!DOCTYPE html>
      <html>
      <head>
          <meta charset="UTF-8"/>
          <title> Bagulho é doido memo </title>
          <style type="text/css">
      #text {
         
         font-size: 45px;
      }
      </style>
      </head>
      <body>
          <input type=submit value="1"
          onclick = "location.href = 'testes.php?id=1'">
          <input type=submit value="2"
          onclick = "location.href = 'testes.php?ad=1'">
          <input type=submit value="3"
          onclick = "location.href = 'testes.php?bd=1'">
          <input type=submit value="4"
          onclick = "location.href = 'testes.php?cd=1'">
          <input type=submit value="5"
          onclick = "location.href = 'testes.php?dd=1'">
          <input type=submit value="6"
          onclick = "location.href = 'testes.php?ed=1'">
          <input type=submit value="7"
          onclick = "location.href = 'testes.php?fd=1'">
          <input type=submit value="8"
          onclick = "location.href = 'testes.php?gd=1'">
          <input type=submit value="9"
          onclick = "location.href = 'testes.php?hd=1'">
          <input type=submit value="10"
          onclick = "location.href = 'testes.php?jd=1'">
          <input type=submit value="20"
          onclick = "location.href = 'testes.php?kd=1'">
          <input type=submit value="30"
          onclick = "location.href = 'testes.php?ld=1'">
          <input type=submit value="40"
          onclick = "location.href = 'testes.php?md=1'">
          <input type=submit value="50"
          onclick = "location.href = 'testes.php?nd=1'">
          <input type=submit value="60"
          onclick = "location.href = 'testes.php?od=1'">
          <input type=submit value="70"
          onclick = "location.href = 'testes.php?pd=1'">
          <input type=submit value="80"
          onclick = "location.href = 'testes.php?qd=1'">
          <input type=submit value="90"
          onclick = "location.href = 'testes.php?rd=1'">
          <h1></h1>
          <?php

      //----------------------------------------------------------------------------------------------------------------------------------------//
      //início do código php, que começa com a declaração do array multidimensional que vai ser o jogo da velha
      //----------------------------------------------------------------------------------------------------------------------------------------//

          $hash_game = array(
           array("barra1" => "|","espaço1" => "---","barra2" => "|","espaço2" => "---","barra3" => "|","espaço3" => "---","barra" => "|"),
           array("barra4" => "|","espaço4" => "---","barra5" => "|","espaço5" => "---","barra6" => "|","espaço6" => "---","barra_" => "|"),
           array("barra7" => "|","espaço7" => "---","barra8" => "|","espaço8" => "---","barra9" => "|","espaço9" => "---","barra__" => "|")
          );
          $vitoria_x = 0;
          $vitoria_o = 0;
      //----------------------------------------------------------------------------------------------------------------------------------------//
      //procedimento responsável por exibir o array
      //----------------------------------------------------------------------------------------------------------------------------------------//

          function exibir_jogo ($hash_game) {
              echo $hash_game[0]['barra1'];
              echo $hash_game[0]['espaço1'];
              echo $hash_game[0]['barra2'];
              echo $hash_game[0]['espaço2'];
              echo $hash_game[0]['barra3'];
              echo $hash_game[0]['espaço3'];
              echo $hash_game[0]['barra'];
              echo "<br/>";
              echo $hash_game[1]['barra4'];
              echo $hash_game[1]['espaço4'];
              echo $hash_game[1]['barra5'];
              echo $hash_game[1]['espaço5'];
              echo $hash_game[1]['barra6'];
              echo $hash_game[1]['espaço6'];
              echo $hash_game[1]['barra_'];
              echo "<br/>";

              echo $hash_game[2]['barra7'];
              echo $hash_game[2]['espaço7'];
              echo $hash_game[2]['barra8'];
              echo $hash_game[2]['espaço8'];
              echo $hash_game[2]['barra9'];
              echo $hash_game[2]['espaço9'];
              echo $hash_game[2]['barra__'];
          }
          exibir_jogo ($hash_game);
          
          echo "<br/>";
          echo "<br/>";
          echo "<br/>";
      //----------------------------------------------------------------------------------------------------------------------------------------//
      //condicionais para fazerem os botões exibirem "x" ou "o"
      //----------------------------------------------------------------------------------------------------------------------------------------//

          if(isset($_GET['id']) == 1){
       $hash_game[0]['espaço1'] = "-x-";
       echo "<br/>";    
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['ad']) == 1){
       $hash_game[0]['espaço2'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['bd']) == 1){
       $hash_game[0]['espaço3'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['cd']) == 1){
       $hash_game[1]['espaço4'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['dd']) == 1){
       $hash_game[1]['espaço5'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['ed']) == 1){
       $hash_game[1]['espaço6'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['fd']) == 1){
       $hash_game[2]['espaço7'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['gd']) == 1){
       $hash_game[2]['espaço8'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['hd']) == 1){
       $hash_game[2]['espaço9'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
      if(isset($_GET['jd']) == 1){
       $hash_game[0]['espaço1'] = "-o-";
       echo "<br/>";    
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['kd']) == 1){
       $hash_game[0]['espaço2'] = "-o-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['ld']) == 1){
       $hash_game[0]['espaço3'] = "-o-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['md']) == 1){
       $hash_game[1]['espaço4'] = "-o-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['nd']) == 1){
       $hash_game[1]['espaço5'] = "-o-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['od']) == 1){
       $hash_game[1]['espaço6'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['pd']) == 1){
       $hash_game[2]['espaço7'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['qd']) == 1){
       $hash_game[2]['espaço8'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
          if(isset($_GET['rd']) == 1){
       $hash_game[2]['espaço9'] = "-x-";
       echo "<br/>";        
       exibir_jogo ($hash_game);
      }
      //----------------------------------------------------------------------------------------------------------------------------------------//
      //condicionais que determinam a vitória de x
      //----------------------------------------------------------------------------------------------------------------------------------------//
      if (($hash_game[0]['espaço1'] == "-x-" && $hash_game[1]['espaço5'] == "-x-" && $hash_game[2]['espaço9'] == "-x-") || ($hash_game[0]['espaço3'] == "-x-" && $hash_game[1]['espaço5'] == "-x-" && $hash_game[2]['espaço7'] == "-x-") || ($hash_game[0]['espaço1'] == "-x-" && $hash_game[0]['espaço2'] == "-x-" && $hash_game[0]['espaço3'] == "-x-") || ($hash_game[1]['espaço4'] == "-x-" && $hash_game[1]['espaço5'] == "-x-" && $hash_game[1]['espaço6'] == "-x-") || ($hash_game[2]['espaço7'] == "-x-" && $hash_game[2]['espaço8'] == "-x-" && $hash_game[2]['espaço9'] == "-x-") || ($hash_game[0]['espaço1'] == "-x-" && $hash_game[1]['espaço4'] == "-x-" && $hash_game[2]['espaço7'] == "-x-") || ($hash_game[0]['espaço2'] == "-x-" && $hash_game[1]['espaço5'] == "-x-" && $hash_game[2]['espaço8'] == "-x-") || ($hash_game[0]['espaço3'] == "-x-" && $hash_game[1]['espaço6'] == "-x-" && $hash_game[2]['espaço9'] == "-x-")){
          $vitoria_x = $vitoria_x + 1;
      }
      //----------------------------------------------------------------------------------------------------------------------------------------//
      //condicionais que determinam a vitória de o
      //----------------------------------------------------------------------------------------------------------------------------------------//

      if (($hash_game[0]['espaço1'] == "-o-" && $hash_game[1]['espaço5'] == "-o-" && $hash_game[2]['espaço9'] == "-o-") || ($hash_game[0]['espaço3'] == "-o-" && $hash_game[1]['espaço5'] == "-o-" && $hash_game[2]['espaço7'] == "-o-") || ($hash_game[0]['espaço1'] == "-o-" && $hash_game[0]['espaço2'] == "-o-" && $hash_game[0]['espaço3'] == "-o-") || ($hash_game[1]['espaço4'] == "-o-" && $hash_game[1]['espaço5'] == "-o-" && $hash_game[1]['espaço6'] == "-o-") || ($hash_game[2]['espaço7'] == "-o-" && $hash_game[2]['espaço8'] == "-o-" && $hash_game[2]['espaço9'] == "-o-") || ($hash_game[0]['espaço1'] == "-o-" && $hash_game[1]['espaço4'] == "-o-" && $hash_game[2]['espaço7'] == "-o-") || ($hash_game[0]['espaço2'] == "-o-" && $hash_game[1]['espaço5'] == "-o-" && $hash_game[2]['espaço8'] == "-o-") || ($hash_game[0]['espaço3'] == "-o-" && $hash_game[1]['espaço6'] == "-o-" && $hash_game[2]['espaço9'] == "-o-")){
          $vitoria_o = $vitoria_o + 1;
      }
      //----------------------------------------------------------------------------------------------------------------------------------------//
      //----------------------------------------------------------------------------------------------------------------------------------------//

      echo "<br/>";
          ?>
      </body>
      </html>
       
       
      Eu criei a matriz e tentei usar botôes pra chamar funções dando "ids" para eles, mas toda fez que eu aperto um botão a página recarrega, perdendo todas as informações colocadas antes, esse é o meu principal problema agora. Se alguém puder me ajudar...
    • By mikuzuhara
      Estes são os arquivos principais do projeto em ruby on rails:
       
      routes.rb:
       
      Rails.application.routes.draw do root to: 'recipes#index' resources :recipes resources :recipe_types end  
      recipe_type.rb:
       
      class RecipeType < ApplicationRecord has_many :recipes end recipe.rb:
       
      class Recipe < ApplicationRecord validates :title, :recipe_type, :cuisine, :difficulty, :cook_time, :ingredients, :cook_method, presence: true belongs_to :recipe_type def cook_time_min "#{cook_time} minutos" end end  
      create_recipes.rb:
       
      class CreateRecipes < ActiveRecord::Migration[5.2] create_table :recipe_types do |t| t.string :name t.timestamps end def change create_table :recipes do |t| t.string :title t.string :recipe_type t.string :cuisine t.string :difficulty t.integer :cook_time t.belongs_to :recipe_type t.timestamps end end end  
      create_recipe_type.rb:
       
      class CreateRecipeTypes < ActiveRecord::Migration[5.2] def change create_table :recipe_types do |t| t.string :name t.timestamps end create_table :recipes do |t| t.string :title t.string :recipe_type t.string :cuisine t.string :difficulty t.integer :cook_time t.belongs_to :recipe_type t.datetime :published_at t.timestamps end end end recipes_controller.rb:
       
      class RecipesController < ApplicationController def index @recipes = Recipe.all end def show @recipe = Recipe.find(params[:id]) end def new @recipe = Recipe.new end def create @recipe = Recipe.new(recipe_params) if @recipe.save redirect_to @recipe else flash[:alert] = 'Você deve informar todos os dados da receita' render :new end end def edit @recipe = Recipe.find(params[:id]) end def update @recipe = Recipe.find(params[:id]) if @recipe.update(recipe_params) redirect_to @recipe else flash[:alert] = 'Você deve informar todos os dados da receita' render :edit end end private def recipe_params params.require(:recipe).permit(:title, :recipe_type, :cuisine, :difficulty, :cook_time, :ingredients, :cook_method) end end  
      index.html.erb:
       
      <h1>CookBook</h1> <p>Bem-vindo ao maior livro de receitas online</p> <%= link_to 'Enviar uma receita', new_recipe_path %> <% @recipes.each do |recipe| %> <h1><%= link_to recipe.title, recipe %></h1> <ul> <li><%= recipe.recipe_type %></li> <li><%= recipe.cuisine %></li> <li><%= recipe.difficulty %></li> <li><%= recipe.cook_time_min %></li> </ul> <% end %>  
      Passo o seguinte comando rspec especificamente em visitor_visit_homepage_spec.rb linha 11:
       
      :~/workspace/cookbook_parte7$ rspec ./spec/features/visitor_visit_homepage_spec.rb:11 Run options: include {:locations=>{"./spec/features/visitor_visit_homepage_spec.rb"=>[11]}} Visitor visit homepage and view recipe (FAILED - 1) Failures: 1) Visitor visit homepage and view recipe Failure/Error: recipe = Recipe.create(title: 'Bolo de cenoura', difficulty: 'Médio', recipe_type: recipe_type, cuisine: 'Brasileira', cook_time: 50, ingredients: 'Farinha, açucar, cenoura', cook_method: 'Cozinhe a cenoura, corte em pedaços pequenos, misture com o restante dos ingredientes') ActiveModel::MissingAttributeError: can't write unknown attribute `recipe_type_id` # ./spec/features/visitor_visit_homepage_spec.rb:14:in `block (2 levels) in <top (required)>' Finished in 0.04808 seconds (files took 1.72 seconds to load) 1 example, 1 failure Failed examples: rspec ./spec/features/visitor_visit_homepage_spec.rb:11 # Visitor visit homepage and view recipe   E depois de fazer as mudanças nos arquivos recipe.rb e create_recipe.rb, executei o seguinte comando novamente:
      $ rails db:migrate RAILS_ENV=test
       
      Ao baixar o repositório na máquina, dei os seguintes comandos:
       
      $ rails generate migration RemoveRecipe_typeToRecipe recipe_type:string
      $ rails db:migrate RAILSENV=test
      $ rails generate model recipe_type name:string
      $ rails db:migrate RAILS_ENV=test
       
      Modifiquei os arquivos recipetype.rb e createrecipe_type.rb conforme mencionado acima e passei o mesmo rails db:migrate mencionado.
       
      Não estou entendendo o por que do erro, os relacionamentos entre as tabelas não estão feitos?
       
      Estou partipando do processo seletivo da Locaweb, e faltam 4 desafios para concluir a entrega dos desafios e o prazo vai até 28/10/2019.
       
      Aguardo por um comentário, dica ou sugestão.
       
      Obrigado,
       
      Marcelino
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.