Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
Alexander
Считай как интерпретатор - BL WORD
[b]Alexander[/b]
Считай как интерпретатор - BL WORD :)
|
|
|
|
Добавлено: Пт июн 13, 2008 22:05 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): Похоже это минимум - 13 слов. Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 ALLOCATE THROW DUP 100 GetLogicalDriveStringsA TYPE ;
А чего-то 5 насчитал ALLOCATE THROW DUP GetLogicalDriveStringsA TYPE и 6 само определение
[quote="chess"]Похоже это минимум - 13 слов. [code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 ALLOCATE THROW DUP 100 GetLogicalDriveStringsA TYPE ;[/code][/quote]
А чего-то 5 насчитал ALLOCATE THROW DUP GetLogicalDriveStringsA TYPE и 6 само определение
|
|
|
|
Добавлено: Пт июн 13, 2008 16:35 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Похоже это минимум - 13 слов.
Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 ALLOCATE THROW DUP 100 GetLogicalDriveStringsA TYPE ;
Похоже это минимум - 13 слов.
[code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 ALLOCATE THROW DUP 100 GetLogicalDriveStringsA TYPE ;[/code]
|
|
|
|
Добавлено: Ср июн 11, 2008 16:08 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
А если еще вдруг вспомнить, что EMIT это 1 TYPE, и есть слово TUCK, то вообще 14-ти хватит:
Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 DUP ALLOCATE THROW TUCK SWAP GetLogicalDriveStringsA TYPE ;
А если еще вдруг вспомнить, что EMIT это 1 TYPE, и есть слово TUCK, то вообще 14-ти хватит:
[code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 DUP ALLOCATE THROW TUCK SWAP GetLogicalDriveStringsA TYPE ;[/code]
|
|
|
|
Добавлено: Ср июн 11, 2008 13:05 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Ну без украшательств только 22 слова будет
Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA OVER + SWAP DO I C@ EMIT LOOP ;
Ну без украшательств только 22 слова будет :)
[code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA OVER + SWAP DO I C@ EMIT LOOP ; [/code]
|
|
|
|
Добавлено: Ср июн 11, 2008 11:42 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
0 VALUE a-buff 0 VALUE len-buff 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA TO len-buff TO a-buff
: LOG-DISKS. a-buff len-buff + a-buff DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;
LOG-DISKS.
41 слово
[quote="chess"] [code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
0 VALUE a-buff 0 VALUE len-buff 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA TO len-buff TO a-buff
: LOG-DISKS. a-buff len-buff + a-buff DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;
LOG-DISKS.[/code][/quote]
41 слово
|
|
|
|
Добавлено: Ср июн 11, 2008 11:01 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
То же самое без глобальных переменных
Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: LATEST ID. SPACE 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA OVER + SWAP DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;
\ EOF LOG-DISKS:
То же самое без глобальных переменных
[code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
: LOG-DISKS: LATEST ID. SPACE 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA OVER + SWAP DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;
\ EOF LOG-DISKS:[/code]
|
|
|
|
Добавлено: Ср июн 11, 2008 10:41 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Pretorian писал(а): Но тут больше требуется алгоритм вывода на консоль построчно из списка. Апи дана, что бы не строить самим список строк.
Тут вывод из буфера проще по EMIT сделать.
Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
0 VALUE a-buff 0 VALUE len-buff 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA TO len-buff TO a-buff
: LOG-DISKS. ." LOG-DISKS: " a-buff len-buff + a-buff DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;
\EOF LOG-DISKS.
[quote="Pretorian"]Но тут больше требуется алгоритм вывода на консоль построчно из списка. Апи дана, что бы не строить самим список строк. [/quote]
Тут вывод из буфера проще по EMIT сделать.
[code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
0 VALUE a-buff 0 VALUE len-buff 100 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA TO len-buff TO a-buff
: LOG-DISKS. ." LOG-DISKS: " a-buff len-buff + a-buff DO I C@ DUP 0= IF DROP SPACE ELSE EMIT THEN LOOP ;
\EOF LOG-DISKS.[/code]
|
|
|
|
Добавлено: Ср июн 11, 2008 09:37 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): Pretorian писал(а): Задача конкурса: самый минимальный код в словах прямо из консоли ...
Да-а-а... Маг калданул - все атдыхають!
[quote="chess"][quote="Pretorian"]Задача конкурса: самый минимальный код в словах[/quote] прямо из консоли :D ... [/quote]
:shock: Да-а-а... :dmad; Маг калданул - все атдыхають!
|
|
|
|
Добавлено: Ср июн 11, 2008 09:34 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
chess писал(а): прямо из консоли Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL 1000 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA DUMP
Хитрый ход однако. Но тут больше требуется алгоритм вывода на консоль построчно из списка. Апи дана, что бы не строить самим список строк.
Это мое первое ТЗ для конкурса, так что я не был готов к таким хитрым моментам.
[quote="chess"] прямо из консоли :D [code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL 1000 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA DUMP [/code][/quote]
Хитрый ход однако. Но тут больше требуется алгоритм вывода на консоль построчно из списка. Апи дана, что бы не строить самим список строк.
Это мое первое ТЗ для конкурса, так что я не был готов к таким хитрым моментам.
|
|
|
|
Добавлено: Ср июн 11, 2008 08:55 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Pretorian писал(а): Показать на консоли список логических дисков доступных в текущий момент.
прямо из консоли
Код: WINAPI: GetLogicalDriveStringsA KERNEL32.DLL 1000 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA DUMP
32A664 41 3A 5C 00 43 3A 5C 00 44 3A 5C 00 45 3A 5C 00 A:\.C:\.D:\.E:\. 32A674 46 3A 5C 00 47 3A 5C 00 48 3A 5C 00 00 00 00 00 F:\.G:\.H:\..... Ok
[quote="Pretorian"]Показать на консоли список логических дисков доступных в текущий момент.[/quote]
прямо из консоли :D
[code]WINAPI: GetLogicalDriveStringsA KERNEL32.DLL 1000 DUP ALLOCATE THROW DUP -ROT SWAP GetLogicalDriveStringsA DUMP
32A664 41 3A 5C 00 43 3A 5C 00 44 3A 5C 00 45 3A 5C 00 A:\.C:\.D:\.E:\. 32A674 46 3A 5C 00 47 3A 5C 00 48 3A 5C 00 00 00 00 00 F:\.G:\.H:\..... Ok[/code]
|
|
|
|
Добавлено: Ср июн 11, 2008 08:39 |
|
|
|
|
|
Заголовок сообщения: |
Доступные логические диски в Windows |
|
|
Показать на консоли список логических дисков доступных в текущий момент. Задача конкурса: самый минимальный код в словах (использовать для буфера только кучу, убивая данные в конце задачи). Код для SPF.
Что бы не лезть в MSDN.
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
( длинна_буфера адрес_буфера -> количество_скопированных_символов|0 )
Буфер будет содержать список строк, каждая строка оканчивается нулем, конец всех строк так же ограничена 0. Пример: Str1 0 Str2 0 Str3 0 0
З.Ы. Либы не подключать иначе буду считать определения слов так же.
Показать на консоли список логических дисков доступных в текущий момент. Задача конкурса: самый минимальный код в словах (использовать для буфера только кучу, убивая данные в конце задачи). Код для SPF.
Что бы не лезть в MSDN.
WINAPI: GetLogicalDriveStringsA KERNEL32.DLL
( длинна_буфера адрес_буфера -> количество_скопированных_символов|0 )
Буфер будет содержать список строк, каждая строка оканчивается нулем, конец всех строк так же ограничена 0. Пример: Str1 0 Str2 0 Str3 0 0
З.Ы. Либы не подключать иначе буду считать определения слов так же.
|
|
|
|
Добавлено: Ср июн 11, 2008 07:37 |
|
|
|