Skip to content

Instantly share code, notes, and snippets.

@alexradzin
Created April 16, 2023 16:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexradzin/242dce82553ddabcb20ec2b7c8adb904 to your computer and use it in GitHub Desktop.
Save alexradzin/242dce82553ddabcb20ec2b7c8adb904 to your computer and use it in GitHub Desktop.
Write function that accepts positive number and prints all numbers with number of digits less than given number. For example input=2 should print 1..9, input=3 should print 1..99 etc.
package com.numberstest;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
public class NumbersTest {
@Test
void n() {
printNumbersBuildOfDigitsLessThan(4);
}
private void printNumbersBuildOfDigitsLessThan(int n) {
for (int i = 1; i < n; i++) {
printNumbersBuildOfDigits(i);
}
}
private void printNumbersBuildOfDigits(int n) {
if (n < 1) {
return;
}
int[] num = new int[n];
num[0] = 1;
for (int i = 1; i < n; i++) {
num[i] = 0;
}
while (num[0] != 0) {
System.out.println(join(num));
int index = n - 1;
for (; num[index] == 9; index--) {
num[index] = 0;
if (index <= 0) {
return;
}
}
num[index] = num[index] + 1;
}
System.out.println(join(num));
}
private static String join(int[] arr) {
return Arrays.toString(arr).replaceAll("[\\[\\],]", "");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment