Prigrama em racket/scheme para troca de cartas

Páginas: 2 (329 palavras) Publicado: 15 de novembro de 2011
#lang racket
; Problema C: Troca de cartas
; Adriano Alberto Borges Ramos TIA: 4080254-1
; Descobrindo qual é o menor número entre a quantidade de trocas.
(define (minimo x y)
(cond ((< x y)x)
(else y)))

; Definindo sintaxe para usar while como loop
(define-syntax (while stx)
(syntax-case stx ()
((_ condition expression ...)
#`(do ()
((not condition))expression
...))))

; Definindo quantidade de trocas de cada uma das jogadoras
(define trocasB 0)
(define trocasA 0)
; Contador
(define i 0)
; Maximo de cartas
(define n100000)
; Vectors de cartas de n posições zerados; Serão usados para contar as cartas que podem ser trocadas
(define vetA(make-vector n))
(define vetB(make-vector n))

; Definindo função"trocar"
; a = quantidade máxima de cartas da jogadora A
; b = quantidade máxima de cartas da jogadora B
; cartasA = vector com as IDs das cartas da jogadora A
; cartasB = vector com as IDs das cartas dajogadora B
; Exemplo:
; (trocar 4 6 #(8 9 15 56) #(15 2 9 16 2 7))
(define (trocar a b cartasA cartasB)
(begin
(while(< i a)
; Número de ID da carta = (posição no vetA-1)++ paraindicar quantas cartas de tal ID existem
(vector-set! vetA (- (vector-ref cartasA i) 1) (+ (vector-ref vetA i) 1))
(set! i (+ i 1))
)
(set! i 0)
(while(< i b); Número de ID da carta = (posição no vetB-1)++ para indicar quantas cartas de tal ID existem
(vector-set! vetB (- (vector-ref cartasB i) 1) (+ (vector-ref vetB i) 1))(set! i (+ i 1))
)
(set! i 0)
(while(< i n)
; Se no vetA existir uma carta e no vetB não existir nenhuma, então é possível trocar
(cond ((and (> (vector-ref vetA i)0) (= (vector-ref vetB i) 0)) (set! trocasA (+ trocasA 1))))
; Se no vetB existir uma carta e no vetA não existir nenhuma, então é possível trocar
(cond ((and (> (vector-ref vetB...
Ler documento completo

Por favor, assinar para o acesso.

Estes textos também podem ser interessantes

  • Racket
  • Scheme
  • Scheme
  • A troca
  • Troca
  • troca
  • a troca
  • A Troca

Seja um membro do Trabalhos Feitos

CADASTRE-SE AGORA!