Google Interview Question
SDE1sCountry: United States
/* Input will be taken from the command line while invoking it*/
class MyChristmasTree {
public static void main(String[] days)
{
int n = Integer.parseInt(days[0]);
if(n < 2)
System.out.println("You cannot generate christmas tree");
else if(n > 20)
System.out.println("Tree is no more");
else {
int max_leaves = 3+2*(n-1);
int dist = max_leaves/2;
String print = "";
for(int i=0; i<dist; i++)
print = print + " ";
print = print + "*";
System.out.println(print);
int leaves = 3;
for(int i=0; i<n-1; i++)
{
for(int j=0; j<(n-i); j++)
{
dist = dist - 1;
print = "";
for(int k=0; k<dist; k++)
{
print = print + " ";
}
for(int k=0; k<leaves; k++)
{
print = print + "*";
}
System.out.println(print);
leaves = leaves + 2;
}
leaves = 3;
dist = max_leaves/2;
}
dist = max_leaves/2;
print = "";
for(int i=0; i<dist; i++)
print = print + " ";
print = print + "*";
System.out.println(print);
System.out.println(print);
}
}
}
#include<bits/stdc++.h>
using namespace std;
int generate(int n)
{
if(n<2)
{
cout<<"You cannot generate christmas tree"<<endl;
return 0;
}
else if(n>20)
{
cout<<"Tree is no more"<<endl;
return 0;
}
int i,j;
for(i=0;i<=n;i++)
{
for(j=0;j<n-i;j++)
cout<<" ";
for(j=0;j<=i;j++)
cout<<"*";
for(j=0;j<i;j++)
cout<<"*";
cout<<endl;
}
if(n>2)
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
cout<<" ";
for(j=0;j<=i;j++)
cout<<"*";
for(j=0;j<i;j++)
cout<<"*";
cout<<endl;
}
if(n>3)
for(int k=1;k<=n-3;k++)
for(i=1;i<n-k;i++)
{
for(j=0;j<n-i;j++)
cout<<" ";
for(j=0;j<=i;j++)
cout<<"*";
for(j=0;j<i;j++)
cout<<"*";
cout<<endl;
}
for(i=0;i<n;i++)
cout<<" ";
cout<<"*"<<endl;
for(i=0;i<n;i++)
cout<<" ";
cout<<"*"<<endl;
return 0;
}
int main()
{
int n;
cin>>n;
generate(n);
return 0;}
public static void main(String[] args)
{
printTree(3," ");
System.out.println();
System.out.println();
System.out.println();
}
public static void printTree(int day,String offset)
{
String singleSpace=" ";
String star="*";
// Base cases
if(day <=1)
{
System.out.println("You cannot generate christmas tree");
return;
}
if(day>20 )
{
System.out.println("Tree is no more");
return;
}
//Printing the top star???
System.out.print(offset);
System.out.println(getSpecialString(day,singleSpace)+""+getSpecialString(1,star));
//Printing the Parts
int parts = day-1;
int levelDiff = day*2+1;
for(int i=0;i<parts;i++)
{
int spaces = day-1;
for(int j=3;j<=levelDiff;j+=2)
{
System.out.print(offset);
System.out.println(getSpecialString(spaces,singleSpace)+""+getSpecialString(j,star));
spaces-=1;
}
levelDiff-=2;
}
//Printing the stand
System.out.print(offset);
System.out.println(getSpecialString(day,singleSpace)+""+getSpecialString(1,star));
System.out.print(offset);
System.out.println(getSpecialString(day,singleSpace)+""+getSpecialString(1,star));
}
private static String getSpecialString(int n,String character)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
sb.append(character);
}
return sb.toString();
}
- ugurdonmez87 July 30, 2016