Привет мир, не пользуясь библиотеками

Вы могли насчитать значения RGB произвольных цветов с теми из постоянного цвета:

(пример в Java)

public Color generateRandomColor(Color mix) {
    Random random = new Random();
    int red = random.nextInt(256);
    int green = random.nextInt(256);
    int blue = random.nextInt(256);

    // mix the color
    if (mix != null) {
        red = (red + mix.getRed()) / 2;
        green = (green + mix.getGreen()) / 2;
        blue = (blue + mix.getBlue()) / 2;
    }

    Color color = new Color(red, green, blue);
    return color;
}


Смешивание произвольных цветов с белым (255, 255, 255) создает нейтральные пастели путем увеличения легкости при хранении оттенка исходного цвета. Эти случайным образом сгенерированные пастели обычно подходят вместе, особенно в больших количествах.

Вот сгенерированное использование некоторых пастельных цветов вышеупомянутого метода:

First


Вы могли также смешать произвольный цвет с постоянной пастелью, которая приводит к крашеному набору нейтральных цветов. Например, использование голубого создает цвета как они:

Second


Движение далее, Вы могли добавить эвристику к своему генератору, которая принимает во внимание дополнительные цвета или уровни штриховки, но все это зависит от впечатления, которого Вы хотите достигнуть со своими произвольными цветами.

Некоторые дополнительные ресурсы:

8
задан Ashley Medway 10 May 2014 в 21:04
поделиться

5 ответов

$ cat > hwa.S
write = 0x04
exit  = 0xfc
.text
_start:
        movl    $1, %ebx
        lea     str, %ecx
        movl    $len, %edx
        movl    $write, %eax
        int     $0x80
        xorl    %ebx, %ebx
        movl    $exit, %eax
        int     $0x80
.data
str:    .ascii "Hello, world!\n"
len = . -str
.globl  _start
$ as -o hwa.o hwa.S
$ ld hwa.o
$ ./a.out
Hello, world!
17
ответ дан 5 December 2019 в 05:56
поделиться

Взгляните на пример 4 (не выиграет приз за переносимость):

#include <syscall.h>

void syscall1(int num, int arg1)
{
  asm("int\t$0x80\n\t":
      /* output */    :
      /* input  */    "a"(num), "b"(arg1)
      /* clobbered */ );
}

void syscall3(int num, int arg1, int arg2, int arg3)
{
  asm("int\t$0x80\n\t" :
      /* output */     :
      /* input  */    "a"(num), "b"(arg1), "c"(arg2), "d"(arg3) 
      /* clobbered */ );
}

char str[] = "Hello, world!\n";

int _start()
{
  syscall3(SYS_write, 0, (int) str, sizeof(str)-1);
  syscall1(SYS_exit,  0);
}

Изменить: как указано Zan Lynx ниже, первый аргумент sys_write - это дескриптор файла . Таким образом, этот код делает необычную вещь, записывая «Hello, world! \ N» в stdin (fd 0) вместо stdout (fd 1).

9
ответ дан 5 December 2019 в 05:56
поделиться

Как насчет того, чтобы написать его на чистой сборке, как в примере, представленном по следующей ссылке?

http://blog.var.cc/blog/archive/2004/11 / 10 / hello_world_in_x86_assembly__programming_workshop. html

2
ответ дан 5 December 2019 в 05:56
поделиться

Вам нужно будет связаться с ОС напрямую. Вы можете записать в файловый дескриптор 1 (stdout), выполнив:

#include <unistd.h>

int main()
{
    write(1, "Hello World\n", 12);
}
0
ответ дан 5 December 2019 в 05:56
поделиться

А как насчет сценария оболочки? Я не заметил в вопросе требований к языку программирования.

echo "Hello World!"
0
ответ дан 5 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: