As questões exigidas e que caem nas Provas das Consultorias, na hora da contratação
50 respostas
J
Jonas_backer
Eu vou começar, umas delas foi pra calcular o Fibonacci , é simples mas as vezes a gente se embaralha em varias formulas , então ai esta !
// Recursive fibonacci method.importjava.math.BigInteger;publicclassFibonacciCalculator{privatestaticBigIntegerTWO=BigInteger.valueOf(2);publicstaticBigIntegerfibonacci(BigIntegernumber){if(number.equals(BigInteger.ZERO)||number.equals(BigInteger.ONE))returnnumber;elsereturnfibonacci(number.subtract(BigInteger.ONE)).add(fibonacci(number.subtract(TWO)));}// displays the fibonacci values from 0-40publicstaticvoidmain(String[]args){for(intcounter=0;counter<=40;counter++)System.out.printf("Fibonacci of %d is: %d\n",counter,fibonacci(BigInteger.valueOf(counter)));}// end main}// end class FibonacciCalculator
Eu vou começar, umas delas foi pra calcular o Fibonacci , é simples mas as vezes a gente se embaralha em varias formulas , então ai esta !
// Recursive fibonacci method.importjava.math.BigInteger;publicclassFibonacciCalculator{privatestaticBigIntegerTWO=BigInteger.valueOf(2);publicstaticBigIntegerfibonacci(BigIntegernumber){if(number.equals(BigInteger.ZERO)||number.equals(BigInteger.ONE))returnnumber;elsereturnfibonacci(number.subtract(BigInteger.ONE)).add(fibonacci(number.subtract(TWO)));}// displays the fibonacci values from 0-40publicstaticvoidmain(String[]args){for(intcounter=0;counter<=40;counter++)System.out.printf("Fibonacci of %d is: %d\n",counter,fibonacci(BigInteger.valueOf(counter)));}// end main}// end class FibonacciCalculator
Tem idéia de que Fibonacci recursivo tem complexidade de tempo fatorial O(n!) ?
J
Jonas_backer
BigInteger ?
R
rmendes08
Jonas backer:
rmendes08:
Tem idéia de que Fibonacci recursivo tem complexidade de tempo fatorial O(n!) ?
BigInteger ?
Ainda não entendi … mesmo que o BigInteger reaproveite suas instâncias, a complexidade de chamadas a add() por exemplo continua tendo complexidade fatorial. Mesmo para uma simples chamada de método, uma complexidade dessa magnitude é inaceitável.
J
Jonas_backer
Se não aceitar BigInterger , sua colocação vai ser uma tese
Vamos para a Towers Of Hanoi
publicclassTowersOfHanoi{// recursively move disks between towerspublicstaticvoidsolveTowers(intdisks,intsourcePeg,intdestinationPeg,inttempPeg){// base case -- only one disk to move if(disks==1){System.out.printf("\n%d --> %d",sourcePeg,destinationPeg);return;}// end if// recursion step -- move (disk - 1) disks from sourcePeg // to tempPeg using destinationPegsolveTowers(disks-1,sourcePeg,tempPeg,destinationPeg);// move last disk from sourcePeg to destinationPeg System.out.printf("\n%d --> %d",sourcePeg,destinationPeg);// move ( disks - 1 ) disks from tempPeg to destinationPeg solveTowers(disks-1,tempPeg,destinationPeg,sourcePeg);}// end method solveTowerspublicstaticvoidmain(String[]args){intstartPeg=1;// value 1 used to indicate startPeg in outputintendPeg=3;// value 3 used to indicate endPeg in outputinttempPeg=2;// value 2 used to indicate tempPeg in outputinttotalDisks=3;// number of disks// initial nonrecursive call: move all disks.TowersOfHanoi.solveTowers(totalDisks,startPeg,endPeg,tempPeg);}// end main}// end class TowersOfHanoi
I
Ironlynx
Um tópico antigo interessante, que pode ajudar no assunto(Provas das Consultorias):
E
entanglement
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.
Duvido que alguém peça para calcular Fibonacci numa prova dessas.
R
Rodrigo_Sasaki
entanglement:
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.
Duvido que alguém peça para calcular Fibonacci numa prova dessas.
Eu nunca fiz heheh, mas ja tive que fazer aquele teste do Einstein das 5 casas, 5 cores, quem bebe o que, quem fuma o que…
Só pra não perder o post, quem quiser brincar de lógica, e não conhece o desafio, aqui vai ele:
Quem disse que fatorial não cai , é bem clássico !!!
publicclassFactorialCalculator{// recursive declaration of method factorialpublicstaticlongfactorial(longnumber){longresult=1;// iterative declaration of method factorialfor(longi=number;i>=1;i--)result*=i;returnresult;}// end method factorial// output factorials for values 0-10publicstaticvoidmain(String[]args){// calculate the factorials of 0 through 10for(intcounter=0;counter<=10;counter++)System.out.printf("%d! = %d\n",counter,factorial(counter));}// end main}// end class FactorialCalculator
J
Jonas_backer
entanglement:
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.
Duvido que alguém peça para calcular Fibonacci numa prova dessas.
[size=18]; -)[/size] , existe um proposito nas colocações , vamos observando !!!
R
rmendes08
??? :shock:
O problema na sua solução do Fibonacci não é usar ou não o BigInteger, mas sim em adotar recursão para resolvê-la. Como eu havia dito, a solução recursiva do fibonnaci acaba por gerar muitos recálculos. Já a solução iterativa não gera esse recálculos, e a torna uma solução muito melhor. Eu fiz um teste na minha máquina (um i5). Calculando Fibonnaci(40) levou 17s com a solução recursiva. A solução iterativa levou menos de 1.
Esse é um exemplo clássico sobre como é importante tomar cuidado com soluções recursivas. Apesar da escrita ficar muito mais elegante, é preciso tomar cuidado para estes casos em que você pode gerar recálculo. Um atenuante seria por exemplo, encapsular o algoritmo em um objeto de forma que você pudesse armazenar os resultados intermediários.
F
fantomas
rmendes08:
O problema na sua solução do Fibonacci não é usar ou não o BigInteger, mas sim em adotar recursão para resolvê-la. Como eu havia dito, a solução recursiva do fibonnaci acaba por gerar muitos recálculos. Já a solução iterativa não gera esse recálculos, e a torna uma solução muito melhor. Eu fiz um teste na minha máquina (um i5). Calculando Fibonnaci(40) levou 17s com a solução recursiva. A solução iterativa levou menos de 1.
Esse é um exemplo clássico sobre como é importante tomar cuidado com soluções recursivas. Apesar da escrita ficar muito mais elegante, é preciso tomar cuidado para estes casos em que você pode gerar recálculo. Um atenuante seria por exemplo, encapsular o algoritmo em um objeto de forma que você pudesse armazenar os resultados intermediários.
Ai fica aquela coisa do tipo: se contestar a consultoria pode assumir que vc é do tipo nerd problema, se não fizer talvez irão deduzir erradamente (porque uma coisa pode não ter nada a ver com a outra) que você pode não saber recursão. Ou ainda você, através do tipo do teste aplicado, deduzir que a consultoria possui projetos muito ruins e que será perda de tempo trabalhar para ela em termo de conhecimento.
Enfim, testes pode ser uma coisa ruim dependendo da situação.
flws
J
jmmenezes
entanglement:
Queria saber se o seu Jonas realmente fez uma prova para contratação em consultoria.
Duvido que alguém peça para calcular Fibonacci numa prova dessas.
++
Isso ta mais pra teste de primeiro ano de faculdade!
R
rmendes08
fantomas:
rmendes08:
O problema na sua solução do Fibonacci não é usar ou não o BigInteger, mas sim em adotar recursão para resolvê-la. Como eu havia dito, a solução recursiva do fibonnaci acaba por gerar muitos recálculos. Já a solução iterativa não gera esse recálculos, e a torna uma solução muito melhor. Eu fiz um teste na minha máquina (um i5). Calculando Fibonnaci(40) levou 17s com a solução recursiva. A solução iterativa levou menos de 1.
Esse é um exemplo clássico sobre como é importante tomar cuidado com soluções recursivas. Apesar da escrita ficar muito mais elegante, é preciso tomar cuidado para estes casos em que você pode gerar recálculo. Um atenuante seria por exemplo, encapsular o algoritmo em um objeto de forma que você pudesse armazenar os resultados intermediários.
Ai fica aquela coisa do tipo: se contestar a consultoria pode assumir que vc é do tipo nerd problema, se não fizer talvez irão deduzir erradamente (porque uma coisa pode não ter nada a ver com a outra) que você pode não saber recursão. Ou ainda você, através do tipo do teste aplicado, deduzir que a consultoria possui projetos muito ruins e que será perda de tempo trabalhar para ela em termo de conhecimento.
Enfim, testes pode ser uma coisa ruim dependendo da situação.
flws
Aqui onde trabalho temos clientes que chegam a faturar + de 1000 notas fiscais de uma vez. Algoritmos ruins para esse tipo de aplicação simplesmente inviabilizam todo um sistema. É por isso que aqui dá-se preferência para quem conhece pelo menos o básico de complexidade de algoritmos (“decorando” as complexidades das ordenações básicas e buscas sobre as estruturas de dados básicas já é o suficiente) do quem treinou o framework da moda.
J
Jonas_backer
Acho que o Tópico esta entrando em outras questões, o objetivo aqui tá mais focado em sair do aperto de situações onde provas e conceitos são exigidos ao candidato algo como questões que são colocadas por consultorias, estou dando exemplos para questões que envolve matemática e ciências, quero colocar também aplicações para calculo financeiro, quanto a questionar o que é aceitável nas aplicações comerciais isso já é um outro tema que poderia ser aberto.
// Calculate the sum of the integers from 1 to 10
Resposta:
publicclassCalculate{publicstaticvoidmain(String[]args){intsum;intx;x=1;// initialize x to 1 for countingsum=0;// initialize sum to 0 for totalingwhile(x<=10)// while x is less than or equal to 10{sum+=x;// add x to sum++x;// increment x}// end whileSystem.out.printf("The sum is: %d\n",sum);}// end main}// end class Calculate
V
ViniGodoy
Eu só colocaria uma questão dessas se tivesse alguma observação do tipo:
“Calcule Fibonacci de forma recursiva, garantindo que o tempo será próximo da forma não recursiva”.
Outra possibilidade seria colocar uma questão de Fibonacci para um corte rápido. Quando a prova tem muitos candidatos (como em grandes empresas), você põe uma questão dessa para uma eliminação rápida daqueles que nem isso responderem.
Em todo caso, fico feliz de saber que o Márcio Duran (Jonas Backer) finalmente resolveu estudar Java.
V
ViniGodoy
Uma questão que eu colocaria numa prova seria essa:
Complete a função abaixo:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
//Seu código aqui
}
Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.
J
Jonas_backer
Exemplo Poligono
importjava.applet.Applet;importjava.awt.BorderLayout;importjava.awt.Color;importjv.viewer.PvDisplay;importjv.viewer.PvViewer;importjv.geom.PgPolygon;publicclassRegularPolygonextendsApplet{// This procedure is executed when the applet startspublicvoidinit(){// ViewerPvViewerviewer=newPvViewer(this,null);// DisplayPvDisplaydisp=newPvDisplay();// Axesdisp.showAxes(false);// Bounding boxdisp.showBndBox(true);// Background colordisp.setBackgroundColor(Color.WHITE);// Regular polygon setupintn=10;// Number of sidesPgPolygonpoly=newPgPolygon(3);// This is a 3D objectpoly.setName("Regular Polygon");poly.setGlobalEdgeColor(Color.blue);poly.setNumVertices(n+1);// We need an extra vertice to// close the regular polygon.// Defining the vertices coordinatesfor(inti=0;i<=n;++i){poly.setVertex(i,Math.cos(2*Math.PI*i/n),Math.sin(2*Math.PI*i/n),0);};// Register the regular polygon in the displaydisp.addGeometry(poly);// Applet layout, quite simple nowsetLayout(newBorderLayout());add(disp,BorderLayout.CENTER);};// End of init()};
J
Jonas_backer
ViniGodoy:
Uma questão que eu colocaria numa prova seria essa:
Complete a função abaixo:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
//Seu código aqui
}
Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.
Como falei no enunciado, é só para usar o drawLine da classe Graphics.
A lógica do que você postou, entretanto, é bem próxima da solução do exercício.
R
rmendes08
ViniGodoy:
Uma questão que eu colocaria numa prova seria essa:
Complete a função abaixo:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
//Seu código aqui
}
Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.
Confesso que demorou um pouco para cair a ficha:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
if(sides < 3){
throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
}
class Rectangular{
int x;
int y;
Rectangular(int x , int y){
this.x = x;
this.y = y;
}
}
class Polar{
int radius;
double angleInRadius;
Polar(int radius, double angleInRadius) {
super();
this.radius = radius;
this.angleInRadius = angleInRadius;
}
Polar addAngle(double angleInRadius){
return new Polar(radius, this.angleInRadius + angleInRadius);
}
public Rectangular toRectangular() {
Rectangular rectangular = new Rectangular(0,0);
rectangular.x = (int) (radius * Math.cos(angleInRadius));
rectangular.y = (int) (radius * Math.sin(angleInRadius));
return rectangular;
}
}
final double STEP_SIZE_IN_RADIANS = (2.0 * Math.PI) / sides;
Polar polar1 = new Polar(radius, 0);
for(int i = 1 ; i <= sides ; i++){
Polar polar2 = polar1.addAngle(STEP_SIZE_IN_RADIANS);
Rectangular rectangular1 = polar1.toRectangular();
Rectangular rectangular2 = polar2.toRectangular();
g2d.drawLine(rectangular1.x, rectangular1.y, rectangular2.x, rectangular2.y);
polar1 = polar2;
}
}
J
Jonas_backer
The length of the sides of an equilateral triangle are equal by definition. The length of a side of an equilateral triangle is conventionally represented by the variable s.
R
rmendes08
é o Duran … sem sombra de dúvidas …
J
Jonas_backer
é o Duran … sem sombra de dúvidas …
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
if(sides < 3){
throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
}
“Então acima de 10000 lados, existe Polígono”
R
rmendes08
é o Duran … sem sombra de dúvidas …
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
if(sides < 3){
throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
}
“Então acima de 10000 lados, existe Polígono”
Sim.
J
Jonas_backer
rmendes08:
“Então acima de 10000 lados, existe Polígono”
Sim. [/quote]
Então o que você defini acima de Myriagon ?
V
ViniGodoy
Um miriágono é um polígono tanto quanto um triângulo, um quadrilátero ou um pentágono.
Só o que muda é o número de vértices (10.000).
G
gomesrod
rmendes08:
Jonas backer:
“Então acima de 10000 lados, existe Polígono”
Sim.
Não, porque aí já ficou redondo faz tempo
J
Jonas_backer
ViniGodoy:
Um miriágono é um polígono tanto quanto um triângulo, um quadrilátero ou um pentágono.
Só o que muda é o número de vértices (10.000).
Sim, e alguém afirmou o que não sabia
R
rmendes08
gomesrod:
rmendes08:
Jonas backer:
“Então acima de 10000 lados, existe Polígono”
Sim.
Não, porque aí já ficou redondo faz tempo
hmmm … pra ser mais exato, fica mais redondo à medida que o número de lados se aproxima de infinito …
V
ViniGodoy
Achei legal a solução com um vôo nas coordenadas polares.
Outras formas de resolver seriam:
Usando diretamente cos e seno;
Usando o conceito de vetores;
Usando matrizes de transformação.
Claro que no fundo, todos são representações matemáticas que acabarão resultando nas mesmas contas.
J
Jonas_backer
ViniGodoy:
Achei legal a solução com um vôo nas coordenadas polares.
Outras formas de resolver seriam:
Usando diretamente cos e seno;
Usando o conceito de vetores;
Usando matrizes de transformação.
Claro que no fundo, todos são representações matemáticas que acabarão resultando nas mesmas contas.
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
if(sides < 3){
throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
}
This is not justice, not observed IllegalArgumentException missing requirements and justify even worse sides exactly where you actually have degrees in the angles available for the formation of polygons.
J
Jonas_backer
rmendes08:
gomesrod:
rmendes08:
Jonas backer:
“Então acima de 10000 lados, existe Polígono”
Sim.
Não, porque aí já ficou redondo faz tempo
hmmm … pra ser mais exato, fica mais redondo à medida que o número de lados se aproxima de infinito …
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
if(sides < 3){
throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
}
Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.
V
ViniGodoy
Quer apostar quanto que ele pegou uma frase dele em português e jogou no google translator para passar para inglês e parecer mais sabido?
A frase não tem pé, nem cabeça, nem estrutura gramatical.
V
ViniGodoy
Jonas backer:
Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.
O erro está correto. Ter pelo menos 3 lados é a condição de existência de um polígono.
Menos que isso seria um segmento de reta ou um ponto.
Um polígono regular ainda tem uma característica extra: é convexo.
Com menos de 3 vértices, sequer define-se um plano. Polígonos, por definição, são figuras planares.
J
Jonas_backer
ViniGodoy:
Jonas backer:
Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.
O erro está correto. Ter pelo menos 3 lados é a condição de existência de um polígono.
Menos que isso seria um segmento de reta ou um ponto.
Um polígono regular ainda tem uma característica extra: é convexo.
Com menos de 3 vértices, sequer define-se um plano. Polígonos, por definição, são figuras planares.
Meu Inglês ? Ficou melhor !!!
If all sides and angles are equivalent, the polygon is called regular. Polygons can be convex, concave, or star. The word “polygon” derives from the Greek poly, meaning “many,” and gonia, meaning “angle.”
J
Jonas_backer
ViniGodoy:
Jonas backer:
Apresentou-se uma lógica, mas discordo sobre sides ainda não é correta a afirmação que justifique IlleglArgumentException, acho que isso ai tá mais pra justificar o algoritmo do que o que consiste ser Polígono.
O erro está correto. Ter pelo menos 3 lados é a condição de existência de um polígono.
Menos que isso seria um segmento de reta ou um ponto.
Um polígono regular ainda tem uma característica extra: é convexo.
Com menos de 3 vértices, sequer define-se um plano. Polígonos, por definição, são figuras planares.
Também gostaria de saber como se forma um ângulo com apenas 2 vértices. Nesse caso, você teria apenas 1 segmento de reta, e nenhum ângulo.
Portanto, nem pela definição que você mesmo colocou seria um polígono. Com 1 único vértice, você passa a ter apenas um ponto, ou seja, nenhum ângulo.
E, com 3 vértices numa figura aberta existirá apenas 1 único ângulo, e não “muitos angulos”, como prega a morfologia da palavra polígono (que não é a descrição do que ela significa).
Aliás, nem sei pq estou perdendo tempo discutindo. Pelo mau inglês e pelos textos mau cortados, não resta dúvida de que vc seja mesmo o Marcio Duran.
Não tem problema, eu gosto de compartilhar o meu conhecimento:
fica a vontade:
Drawing each diagonal in a regular polygon, let R(n) denote the number of regions into which the polygon is divided. Then R(n) is given by
Where
For n=1, 2, …, the values of R(n) are given by 1, 4, 11, 24, 50, 80, 154, 220, 375, … (Sloane’s A007678 ).
For n odd, all terms but the first drop out, so the numbers of regions are given by
pois é , dá pra ver que você conhece muito de copiar/colar …
A
AUser
Márcio Duran,
Não é colocando equações que nem você sabe o que significa que você vai chegar a algum lugar. O ViniGodoy está certo, simples assim. Não é nenhum golpe de ego não, ele só está correto, pode ficar tranquilo…
ViniGodoy,
Não conheço quase nada de geometria (e sim, eu era um mau-aluno de geometria na escola), me responda: em que casos se usa um miriágono? Qual é o seu uso?
[]'s
J
Jonas_backer
“Truth is so obscure in these times, and falsehood so established, that, unless we love the truth, we cannot know it”
V
ViniGodoy
Também desconheço. Creio que seja só teórico.
Eu sei que os filósofos usavam formas geométricas assim para mostrar que qualquer polígono convexo com um número grande o suficiente de lados será praticamente indistinguível de um círculo (Descartes falava em polígonos com 1 milhão de lados).
J
Jonas_backer
importjava.awt.*;importjavax.swing.*;publicclassBasicDraw{publicstaticvoidmain(String[]args){newBasicDraw();}BasicDraw(){// Create a frameJFrameframe=newJFrame();// Add a component with a custom paint methodframe.getContentPane().add(newMyComponent());// Display the frameintframeWidth=300;intframeHeight=300;frame.setSize(frameWidth,frameHeight);frame.setVisible(true);}classMyComponentextendsJComponent{// This method is called whenever the contents needs to be paintedpublicvoidpaint(Graphicsg){// Retrieve the graphics context; this object is used to paint shapesGraphics2Dg2d=(Graphics2D)g;// Draw an oval that fills the windowintx=0;inty=0;intwidth=getSize().width-1;intheight=getSize().height-1;g2d.drawOval(x,y,width,height);}}}
Acredito que seria a melhor forma para o solução do problema representação em ângulos
publicvoidpaint(Graphicsg){Graphics2Dg2d=(Graphics2D)g;g2d.drawLine(x1,y1,x2,y2);g2d.drawOval(x,y,w,h);g2d.drawRect(x,y,w,h);// A start angle of 0 represents a 3 o'clock position, 90 represents a 12 o'clock position,// and -90 (or 270) represents a 6 o'clock positionintstartAngle=45;intarcAngle=-60;g2d.drawArc(x,y,w,h,startAngle,arcAngle);g2d.drawRoundRect(x,y,w,h,arcWidth,arcHeight);Polygonpolygon=newPolygon();polygon.addPoint(x,y);// Add more points...g2d.drawPolygon(polygon);}
L
Luiz_Augusto_Prado
Pelo que vejo vc almeja uma vaga de programador junior.
Eu não sei que tipo de empresa vc tá pensando ir fazer essa prova, mas a não ser que seja uma fabrica de jogos, vc deveria se focar em outras questões, mais do que no desenho.
O avaliador vai querer saber mais sobre sua lógica de programação e algumas técnicas básica do que seu conhecimento sobre as peculiaridades da linguagem. Claro, algumas bibliotecas são imprescindíveis: java.util, java.io e java.lang.
Exemplo do que vc deve saber:
Pilha, listas encadeadas, ordenação, OO, MVC…
Trabalhar com Strings…
J
Jonas_backer
“Nem tem problema, vou lhe servir um pão de plastico para você comer, mas se você achar que estou lhe enganando eu vou lhe dizer que a ideia foi só sua”
J
Jonas_backer
rmendes08:
ViniGodoy:
Uma questão que eu colocaria numa prova seria essa:
Complete a função abaixo:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
//Seu código aqui
}
Usando da classe Graphics2D apenas o método g2d.drawLine(float x1, float y1, float x2, float y2).
Valide o fato de sides ter que ser >= 3.
Confesso que demorou um pouco para cair a ficha:
void drawRegularPolygon(Graphics2D g2d, int sides, int radius) {
if(sides < 3){
throw new IllegalArgumentException("Não existe polígono com menos de 3 lados.");
}
class Rectangular{
int x;
int y;
Rectangular(int x , int y){
this.x = x;
this.y = y;
}
}
class Polar{
int radius;
double angleInRadius;
Polar(int radius, double angleInRadius) {
super();
this.radius = radius;
this.angleInRadius = angleInRadius;
}
Polar addAngle(double angleInRadius){
return new Polar(radius, this.angleInRadius + angleInRadius);
}
public Rectangular toRectangular() {
Rectangular rectangular = new Rectangular(0,0);
rectangular.x = (int) (radius * Math.cos(angleInRadius));
rectangular.y = (int) (radius * Math.sin(angleInRadius));
return rectangular;
}
}
final double STEP_SIZE_IN_RADIANS = (2.0 * Math.PI) / sides;
Polar polar1 = new Polar(radius, 0);
for(int i = 1 ; i <= sides ; i++){
Polar polar2 = polar1.addAngle(STEP_SIZE_IN_RADIANS);
Rectangular rectangular1 = polar1.toRectangular();
Rectangular rectangular2 = polar2.toRectangular();
g2d.drawLine(rectangular1.x, rectangular1.y, rectangular2.x, rectangular2.y);
polar1 = polar2;
}
}
"Um monte de código sem sentido algum"
L
Luiz_Augusto_Prado
Jonas backer:
Luiz Augusto Prado:
Pelo que vejo vc almeja uma vaga de programador junior.
Eu não sei que tipo de empresa vc tá pensando ir fazer essa prova, mas a não ser que seja uma fabrica de jogos, vc deveria se focar em outras questões, mais do que no desenho.
O avaliador vai querer saber mais sobre sua lógica de programação e algumas técnicas básica do que seu conhecimento sobre as peculiaridades da linguagem. Claro, algumas bibliotecas são imprescindíveis: java.util, java.io e java.lang.
Exemplo do que vc deve saber:
Pilha, listas encadeadas, ordenação, OO, MVC…
Trabalhar com Strings…
“Nem tem problema, vou lhe servir um pão de plastico para você comer, mas se você achar que estou lhe enganando eu vou lhe dizer que a ideia foi só sua”
por que? porque “jacaré não come alpiste”?
Se acredita que seu avaliador vai comer esse pão, boa sorte.
Já ouviu falar do “quarto chinês” ?
Ninguem vai muito longe trabalhando em um quarto assim.
V
ViniGodoy
Bom, já que o Duran boicotou o próprio tópico dele, topico trancado.