Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,33 @@
|
|||
import java.util.*;
|
||||
|
||||
class Zeckendorf
|
||||
{
|
||||
public static String getZeckendorf(int n)
|
||||
{
|
||||
if (n == 0)
|
||||
return "0";
|
||||
List<Integer> fibNumbers = new ArrayList<Integer>();
|
||||
fibNumbers.add(1);
|
||||
int nextFib = 2;
|
||||
while (nextFib <= n)
|
||||
{
|
||||
fibNumbers.add(nextFib);
|
||||
nextFib += fibNumbers.get(fibNumbers.size() - 2);
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = fibNumbers.size() - 1; i >= 0; i--)
|
||||
{
|
||||
int fibNumber = fibNumbers.get(i);
|
||||
sb.append((fibNumber <= n) ? "1" : "0");
|
||||
if (fibNumber <= n)
|
||||
n -= fibNumber;
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
for (int i = 0; i <= 20; i++)
|
||||
System.out.println("Z(" + i + ")=" + getZeckendorf(i));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Zeckendorf {
|
||||
|
||||
private List<Integer> getFibList(final int maxNum, final int n1, final int n2, final List<Integer> fibs){
|
||||
if(n2 > maxNum) return fibs;
|
||||
|
||||
fibs.add(n2);
|
||||
|
||||
return getFibList(maxNum, n2, n1 + n2, fibs);
|
||||
}
|
||||
|
||||
public String getZeckendorf(final int num) {
|
||||
if (num <= 0) return "0";
|
||||
|
||||
final List<Integer> fibs = getFibList(num, 1, 2, new ArrayList<Integer>(){{ add(1); }});
|
||||
|
||||
return getZeckString("", num, fibs.size() - 1, fibs);
|
||||
}
|
||||
|
||||
private String getZeckString(final String zeck, final int num, final int index, final List<Integer> fibs){
|
||||
final int curFib = fibs.get(index);
|
||||
final boolean placeZeck = num >= curFib;
|
||||
|
||||
final String outString = placeZeck ? zeck + "1" : zeck + "0";
|
||||
final int outNum = placeZeck ? num - curFib : num;
|
||||
|
||||
if(index == 0) return outString;
|
||||
|
||||
return getZeckString(outString, outNum, index - 1, fibs);
|
||||
}
|
||||
|
||||
public static void main(final String[] args) {
|
||||
final Zeckendorf zeckendorf = new Zeckendorf();
|
||||
|
||||
for(int i =0; i <= 20; i++){
|
||||
System.out.println("Z("+ i +"):\t" + zeckendorf.getZeckendorf(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue