Skip to content

Month: August 2009

POSCOMP 2007, Questão 66, Tecnologia da Informação

66. [TE] Considere os pares de endereços de host e suas respectivas máscaras de endereços listados abaixo.

  • I. 192.168.0.43/255.255.255.192 e 192.168.0.66/255.255.255.192
  • II. 192.168.1.97/255.255.255.224 e 192.168.1.118/255.255.255.254
  • III. 192.168.2.115/255.255.255.128 e 192.168.2.135/255.255.255.128
  • IV. 192.168.4.167/255.255.255.224 e 192.168.4.207/255.255.255.224

Os itens nos quais o par citado pertence a uma mesma sub-rede são

  • A) apensa I, II, V
  • B) apenas I, III
  • C) apenas II, IV
  • D) apensa II, III, IV
  • E) apenas III, IV, V

Resolução:

Analisando o I, temos

192 =  11000000 (máscara)
43 =   00101011 (host)
66 =   01000010 (host)

O primeiro par de host e máscara define o endereço 101011 na rede 00 e o segundo é o 000010 na rede 01, portanto redes diferentes. Isso elimina as alternativas A e B da questão.

Fazendo o mesmo para a II:

224 =   11100000 (máscara)
97 =    01100001 (host)
118 =   01110110 (host)

Aplicando a mesmo raciocínio de máscara (vou escrever agora mais resumidamente) 43/192 é o 00001 na rede 011 e o 66/192 é o 10110 também na rede 011. Portanto mesma rede, eliminando a alternativa E.

Resta agora analisar o III.

128 =   10000000 (máscara)
115 =   01110011 (host)
135 =   10000111 (host)

115/128 é o 1110011 na rede 0 e o 135/128 é o 0000111 na rede 1. Os pares de III estão em redes diferentes.

Os pares que estão em uma mesma sub-rede são os II e IV. Alternativa C.

POSCOMP 2007, Questão 18, Matemática

18. [MT] Um professor de programação passa um trabalho e avisa à turma que vai utilizar um verificador automático para detectar trabalhos copiados. Os alunos descobrem que o verificador não é capaz de identificar a cópia se as linhas do programa não aparecem na mesma ordem. Além disso, eles também descobrem que uma rotina do trabalho de um de seus colegas continua funcionando corretamente se as linhas são trocadas de ordem, mas nenhuma linha aparece à distância maior do que 1 de sua posição original. Indique o número de alunos que podem entregar uma cópia do trabalho quando n = 7 (incluindo o próprio autor do trabalho).
a) 32
b) 21
c) 14
d) 128
e) 64


Resolução:

trabalho_original

Seja a seguinte notação, quando o trabalho não trocou nenhuma linha escrevemos IIIIIII. Quando o trabalho tem a sexta linha trocada com a sétima escrevemos IIIIIX.

trabalho_mudado

É como se trocássemos os II por um X. Assim temos as seguintes sequências, a sem nenhum X:

  1. IIIIIII

Então os com somente um X.

  1. IIIIIX
  2. IIIIXI
  3. IIIXII
  4. IIXIII
  5. IXIIII
  6. XIIIII

Os com dois X:

  1. IIIXX
  2. IIXIX
  3. IXIIX
  4. XIIIX
  5. IIXXI
  6. IXIXI
  7. XIIXI
  8. IXXII
  9. XIXII
  10. XXIII

E os com três X:

  1. IXXX
  2. XXXI
  3. XXIX
  4. XIXX

Como não podemos usar mais que três X, então temos o número de combinação foi de 21, alternativa B.

Palestra Pixel Art na Biblioteca Dolor Barreira

Este sábado (22 de Agosto) estarei na Biblioteca/Gibiteca Dolor Barrera para uma palestra sobre Pixel Art.

Horário: 10 am.
Local: Biblioteca Dolor Barreira, Avenida da Universidade, 2572. Fortaleza, Ceará.

nessa_running

O evento é gratuito e faz parte de uma programação semanal de palestras que acontecem no local. Vale a pena comparecer não só pela palestra mas também para conhecer a gibiteca que conta com um excelente acervo de gibis e mangas.

Confira também o blog e o twitter da gibiteca.

Atualizado: Fotos do evento no Flickr.

Pygame, Simple Space Effect

This is a simple space effect of sliding stars using Pygame.

Direct link to video: simple_space_effect_01.ogv

We set some constants like the screen size and the number N of star we want.

N = 200
SCREEN_W, SCREEN_H = (640, 480)

Using list comprehension we create a list of random points in the screen, that will be our stars. The size of this list is N.

stars = [
  [random.randint(0, SCREEN_W),random.randint(0, SCREEN_H)]
  for x in range(N)
]

Each star is represented by one tuple on the stars list. The first star is on stars[0] and is a touple with [x, y] positions.

At each step from the game loop we draw and update the position of each star. A star is draw as a white line of one pixel. See the pygame.draw.line doc.

for star in stars:
  pygame.draw.line(background,
    (255, 255, 255), (star[0], star[1]), (star[0], star[1]))
  star[0] = star[0] - 1
  if star[0] < 0:
      star[0] = SCREEN_W
      star[1] = random.randint(0, SCREEN_H)

In this example we update the position of a star by decreasing its horizontal position. When the horizontal position is less than zero, it’s not displayed on the screen anymore so we replace its horizontal position (star[0]) by the screen width (SCREEN_W) and the vertical position (star[1]) by a new random position. This will be like create a new star and guarantee always a different pattern of sliding stars.

The complete code:

#!/usr/bin/env python
 
# A simple effect of sliding stars to create a deep space sensation.
# by Silveira Neto <me@silveiraneto.net>
# Free under the terms of GPLv3 license
# See http://silveiraneto.net/2009/08/12/pygame-simple-space-effect/
 
import os,sys,random
import pygame
from pygame.locals import *
 
# Constants 
N = 200
SCREEN_W, SCREEN_H = (640, 480)
 
def main():
	# basic start
	pygame.init()
	screen = pygame.display.set_mode((SCREEN_W,SCREEN_H))
	pygame.display.set_caption('Simple Space Effect by Silveira Neto')
 
	# create background
	background = pygame.Surface(screen.get_size())
	background = background.convert()
 
	# generate N stars
	stars = [
		[random.randint(0, SCREEN_W),random.randint(0, SCREEN_H)]
		for x in range(N)
	]
 
	# main loop
	clock = pygame.time.Clock()
	while 1:
		clock.tick(22)
		for event in pygame.event.get():
			if event.type == QUIT:
				return
			elif event.type == KEYDOWN and event.key == K_ESCAPE:
				return
		background.fill((0,0,0))
		for star in stars:
			pygame.draw.line(background,
				(255, 255, 255), (star[0], star[1]), (star[0], star[1]))
			star[0] = star[0] - 1
			if star[0] < 0:
				star[0] = SCREEN_W
				star[1] = random.randint(0, SCREEN_H)
		screen.blit(background, (0,0))
		pygame.display.flip()
 
if __name__ == '__main__': main()