Если вы являетесь not на сервере, но разрабатываете и должны часто перезагружать модуль, вот хороший отзыв.
Сначала сделайте убедитесь, что вы используете превосходную оболочку IPython из проекта Jupyter Notebook. После установки Jupyter вы можете запустить его с помощью ipython
или jupyter console
или даже лучше jupyter qtconsole
, что даст вам красивую раскрашенную консоль с завершением кода в любой ОС.
Теперь в ваша оболочка, введите:
%load_ext autoreload
%autoreload 2
Теперь, каждый раз, когда вы запускаете свой скрипт, ваши модули будут перезагружены.
Помимо 2
, существуют другие опции магии автозагрузки :
%autoreload
Reload all modules (except those excluded by %aimport) automatically now.
%autoreload 0
Disable automatic reloading.
%autoreload 1
Reload all modules imported with %aimport every time before executing the Python code typed.
%autoreload 2
Reload all modules (except those excluded by %aimport) every time before
executing the Python code typed.
Я делаю собственный плоттер (plot0
), который записывает непосредственно в выходной поток char за символом, строка за строкой:
private static void plot0(final int... numbers) {
final int cols = numbers.length;
final IntSummaryStatistics stat = Arrays.stream(numbers).summaryStatistics();
final int max = stat.getMax();
final int min = stat.getMin();
final int rows;
if (min < 0) {
rows = Math.max(0, max) + ~min + 2;
} else {
rows = max;
}
for (int i = 0; i < rows; i++) {
final int val = Math.max(0, max) - i;
if (0 == val) {
continue; // do not plot zero
}
for (int j = 0; j < cols; j++) {
final int num = numbers[j];
System.out.print(
0 < num && 0 < val && num >= val
|| 0 > num && 0 > val && num <= val
? '*'
: ' ');
}
System.out.println();
}
}
Я внес небольшие изменения в ваш код (переименуйте в plot1
), но в основном оригинальное мышление работает.
Arrays.deepToString(tempArray[i])
на new String(tempArray[i])
' '
в Arrays.fill(tempArray[i], ' ');
'*'
значений, а не до '*'
переопределяют [ 1110], поэтому вы не можете писать напрямую на выход. private static void plot1(final int... array) {
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (final int element : array) {
if (element > max) {
max = element;
}
if (element < min) {
min = element;
}
}
if (min < 0) {
min *= -1;
}
final char[][] tempArray = new char[array.length][max + min + 1];
for (int i = 0; i < tempArray.length; i++) {
Arrays.fill(tempArray[i], ' ');
if (array[i] > 0) {
for (int j = min + 1; j <= min + array[i]; j++) {
tempArray[i][j] = '*';
}
} else if (array[i] < 0) {
for (int j = min - 1; j >= min + array[i]; j--) {
tempArray[i][j] = '*';
}
}
System.out.println(new String(tempArray[i]));
}
}