Added sources of life2 demo to SVN.

git-svn-id: svn://kolibrios.org@1769 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Yogev Ezra 2011-01-28 13:00:06 +00:00
parent 7bc3bc518a
commit 2bf6bb3b5b
283 changed files with 88887 additions and 0 deletions

View File

@ -0,0 +1,195 @@
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include "picture.h"
char str[1000], name[1000], *s;
int type;
int mx = 0, my = 0, slen;
BYTE *tex = 0;
inline void out_uc(unsigned char c, int &k)
{
if (k < 0) {printf("\n\""); k = 0;}
printf("\\x%02X", c);
k++;
if (k >= 20) {printf("\""); k = -1;}
}
inline void out_cl(int &k)
{
if (k >= 0) {printf("\""); k = -1;}
}
inline void out_end(int &k)
{
if (k == -10) return;
if (type == 0) {out_uc(0, k); out_uc(255, k);}
out_cl(k);
printf(";\n\n");
k = -10;
}
void del_last_space(char *s0)
{
char *s1;
for (s1 = s0; *s1; s1++)
{
if (!isspace(*s1)) s0 = s1 + 1;
}
*s0 = 0;
}
int main()
{
BYTE *t0;
int i, j, k, m, t, v;
// randomize();
srand(time(NULL));
i = rand() + (rand() << 16);
j = rand() + (rand() << 16);
k = rand() + (rand() << 16);
printf("#ifndef _INCLUDE_BITMAP_%08X_%08X_%08X__PICTURE_\n", i, j, k);
printf("#define _INCLUDE_BITMAP_%08X_%08X_%08X__PICTURE_\n", i, j, k);
strcpy(name, "bitmap_pictures");
type = 0;
k = -10;
while (!feof(stdin))
{
memset(str, 0, sizeof(str));
fgets(str, sizeof(str)-1, stdin);
s = str;
while (*s && isspace(*s)) s++;
if (strncmp(s, "rem", 3) != 0) continue;
s += 3;
if (!isspace(*s)) continue;
while (*s && isspace(*s)) s++;
if (strncmp(s, "<array", 6) == 0)
{
s += 6;
if (strncmp(s, ":bmp>", 5) == 0) {s += 5; v = 0;}
else if (strncmp(s, ":set>", 5) == 0) {s += 5; v = 1;}
else if (strncmp(s, ":life>", 6) == 0) {s += 6; v = 2;}
else continue;
if (!isspace(*s)) continue;
while (*s && isspace(*s)) s++;
if (!*s) continue;
del_last_space(s);
strcpy(name, s);
out_end(k);
type = v;
continue;
}
else if (strncmp(s, "<skip>", 6) == 0)
{
s += 6;
if (!isspace(*s)) continue;
while (*s && isspace(*s)) s++;
if (!*s) continue;
i = 2*atoi(s);
while (--i >= 0) out_uc(0, k);
continue;
}
else if (strncmp(s, "<bitmap", 7) == 0)
{
s += 7; v = 0;
for (;;)
{
if (strncmp(s, ":inv", 4) == 0) {s += 4; v ^= 1;}
else break;
}
if (s[0] == '>') s++;
else continue;
}
else continue;
if (!isspace(*s)) continue;
while (*s && isspace(*s)) s++;
if (!*s) continue;
del_last_space(s);
if ((PictureFileOpen(mx, my, tex, s) & PFO_MASK_ERROR) != 0) continue;
if (!tex || mx <= 0 || my <= 0) continue;
if (type == 0 || type == 1)
{
if (mx >= 256 || my >= 256) continue;
}
else if (type == 2)
{
if (mx >= 65536 || my >= 65536) continue;
}
slen = GetStringPictLenght(mx);
if (k == -10)
{
printf("\nconst unsigned char %s[] = \"", name);
if (type == 2) printf("#LifeBin 2.0\\n");
printf("\"");
k = -1;
}
if (v & 1)
{
for (i = 0; i < my; i++)
{
t0 = tex + slen * i;
for (j = 3*mx; j > 0; j--)
{
t0[0] = (unsigned char)~t0[0];
t0++;
}
}
}
m = 0; t = 0;
if (type == 0 || type == 1)
{
out_uc((unsigned char)mx, k); out_uc((unsigned char)my, k);
}
else if (type == 2)
{
out_uc((unsigned char)mx, k); out_uc((unsigned char)(mx >> 8), k);
out_uc((unsigned char)my, k); out_uc((unsigned char)(my >> 8), k);
}
for (i = 0; i < my; i++)
{
t0 = tex + slen * i;
for (j = mx; j > 0; j--)
{
if (type == 0)
{
out_uc(t0[2], k); out_uc(t0[1], k); out_uc(t0[0], k);
}
else if (type == 1)
{
m |= ((int)t0[0] + (int)t0[1] + (int)t0[2] >= 384) << t;
if (++t >= 8) {out_uc((unsigned char)m, k); m = 0; t = 0;}
}
else if (type == 2)
{
if ((int)t0[0] + (int)t0[1] + (int)t0[2] >= 384)
{
if (m) {out_uc((unsigned char)m, k); m = 0;}
out_uc(0, k);
}
else
{
if (m == 255) {out_uc((unsigned char)m, k); m = 0;}
m++;
}
}
t0 += 3;
}
}
if (type == 1)
{
if (t) out_uc((unsigned char)m, k);
}
else if (type == 2)
{
if (m) out_uc((unsigned char)m, k);
}
}
if (tex) delete[] tex;
out_end(k);
printf("#endif\n");
return 0;
}

Binary file not shown.

View File

@ -0,0 +1,7 @@
Для компиляции необходим Borland C++, а также FASM версии не более 1.64.
life_bmp.bat создаёт необходимый для компиляции h-файл с картинками.
cpp2asm.bat компилирует С++-исходник в TASM-исходник,
а потом превращает его в FASM-исходник.
После этого, возможно, понадобится перенести в f_life2.asm строки с equ
в начало файла.
Компиляция бинарника - как обычно, fasm f_life2.asm life2.

View File

@ -0,0 +1,3 @@
bcc32 -S -v- -R- -6 -a4 -O2 -Og -Oi -Ov -OS -k- -D__MENUET__ -Iinclude life2.cpp
echo include "me_make.inc" > f_life2.asm
t2fasm < life2.asm >> f_life2.asm

View File

@ -0,0 +1,278 @@
#ifndef __MENUET_FILE_H_INCLUDED_
#define __MENUET_FILE_H_INCLUDED_
#include <menuet.h>
#include <me_heap.h>
// Menuet file interface.
namespace Menuet // All menuet functions, types and data are nested in the (Menuet) namespace.
{
struct _FileDataStruct;
typedef _FileDataStruct *TFileData;
TFileData FileOpen(const char *name, unsigned int buffer_length = 1024);
int FileClose(TFileData file_data);
bool FileEof(TFileData file_data);
unsigned int FileGetPosition(TFileData file_data);
void FileSetPosition(TFileData file_data, unsigned int pos);
void FileReset(TFileData file_data);
unsigned int FileGetLength(TFileData file_data);
int FileTestRead(TFileData file_data);
int FileRead(TFileData file_data, void *mem, int size);
}
#ifdef __MENUET__
namespace Menuet
{
// Define the file data structure.
struct _FileDataStruct
{
unsigned int length;
unsigned int position;
unsigned int *buffer;
unsigned int access_param[5];
enum {PosName = (unsigned int)(((_FileDataStruct*)0)->access_param + 5)};
};
// Inline functions.
inline bool FileEof(TFileData file_data)
{
return file_data && file_data->position >= file_data->length;
}
inline unsigned int FileGetPosition(TFileData file_data)
{
return file_data ? file_data->position : 0;
}
inline void FileReset(TFileData file_data)
{
if (!file_data) return;
file_data->length = -1;
file_data->position = 0;
if (file_data->buffer) file_data->buffer[1] = 0;
}
// Functions.
int _FileAccess(void *file_access_param);
TFileData FileOpen(const char *name, unsigned int buffer_length)
{
if (!name || !name[0]) return 0;
unsigned int name_len = StrLen(name) + 1;
unsigned int data_len = (_FileDataStruct::PosName + name_len + 3) & ~3;
buffer_length = (buffer_length / MENUET_FILE_BLOCK_SIZE) * MENUET_FILE_BLOCK_SIZE;
if (buffer_length) data_len += buffer_length + 2*sizeof(unsigned int);
TFileData file = (TFileData)Alloc(_FileDataStruct::PosName + data_len);
if (!file) return 0;
file->length = -1;
file->position = 0;
if (buffer_length)
{
file->buffer = (unsigned int*)((char*)file + data_len) - 2;
file->buffer[0] = buffer_length;
file->buffer[1] = 0;
}
MemCopy(file->access_param + 5, name, name_len);
unsigned int attr[40/4];
file->access_param[0] = 5;
file->access_param[1] = 0;
file->access_param[2] = 0;
file->access_param[3] = 0;
file->access_param[4] = (int)attr;
_FileAccess(file->access_param);
file->length = attr[32/4];
return file;
}
int FileClose(TFileData file_data)
{
if (!file_data) return -1;
Free(file_data);
return 0;
}
void FileSetPosition(TFileData file_data, unsigned int pos)
{
if (!file_data) return;
if (file_data->buffer && file_data->buffer[1])
{
if (pos >= file_data->position && pos < file_data->position + file_data->buffer[1])
{
file_data->buffer[1] -= pos - file_data->position;
}
else file_data->buffer[1] = 0;
}
file_data->position = pos;
}
int _FileReadBuffer(TFileData file_data, void *mem, int size, void *temp_mem = 0)
{
unsigned int *buffer;
if (!file_data || !mem || size <= 0) return -1;
if (file_data->buffer) buffer = file_data->buffer;
else if (temp_mem)
{
buffer = (unsigned int*)((char*)temp_mem + MENUET_FILE_BLOCK_SIZE);
}
else return 0;
if (!buffer[1]) return 0;
if (file_data->position >= file_data->length)
{
buffer[1] = 0;
return 0;
}
unsigned int buf_size = file_data->length - file_data->position;
if (buf_size > buffer[1]) buf_size = buffer[1];
if ((unsigned int)size >= buf_size) size = buf_size;
MemCopy(mem, (char*)buffer - buffer[1], size);
file_data->position += size;
if ((unsigned int)size >= buf_size) buffer[1] = 0;
else buffer[1] -= size;
return size;
}
int _FileReadSystem(TFileData file_data, void *mem, int size)
{
int res;
unsigned int len0, len1;
size /= MENUET_FILE_BLOCK_SIZE;
if (!file_data || !mem || size <= 0) return -1;
file_data->access_param[0] = 0;
file_data->access_param[1] = (file_data->position / MENUET_FILE_BLOCK_SIZE) * MENUET_FILE_BLOCK_SIZE;
file_data->access_param[2] = 0;
file_data->access_param[3] = size * MENUET_FILE_BLOCK_SIZE;
file_data->access_param[4] = (unsigned int)mem;
res = _FileAccess(file_data->access_param);
if (res != 0 && res != 6) return (res & 255) - 1024;
if (file_data->length <= file_data->position) return 0;
len0 = file_data->length - file_data->position;
len1 = size * MENUET_FILE_BLOCK_SIZE - (file_data->position % MENUET_FILE_BLOCK_SIZE);
return (len0 <= len1) ? len0 : len1;
}
int _FileBufferSystem(TFileData file_data, void *&temp_mem)
{
int res;
unsigned int *buffer;
if (!file_data) return -1;
if (file_data->buffer) buffer = file_data->buffer;
else
{
if (!temp_mem)
{
temp_mem = Alloc(MENUET_FILE_BLOCK_SIZE + 2*sizeof(unsigned int));
if (!temp_mem) return -10;
}
buffer = (unsigned int*)((char*)temp_mem + MENUET_FILE_BLOCK_SIZE);
buffer[0] = MENUET_FILE_BLOCK_SIZE;
}
buffer[1] = buffer[0];
res = _FileReadSystem(file_data, (char*)buffer - buffer[1], buffer[1]);
if (res < 0) buffer[1] = 0;
else buffer[1] -= file_data->position % MENUET_FILE_BLOCK_SIZE;
return res;
}
int FileTestRead(TFileData file_data)
{
int res;
void *temp_mem = 0;
if (!file_data) return -1;
if (file_data->buffer && file_data->buffer[1]) return 0;
res = _FileBufferSystem(file_data, temp_mem);
if (temp_mem) Free(temp_mem);
return (res < 0) ? res : 0;
}
int FileRead(TFileData file_data, void *mem, int size)
{
int tlen, res, read_len;
void *temp_mem = 0;
res = _FileReadBuffer(file_data, mem, size);
if (res < 0 || res >= size) return res;
read_len = res;
mem = (char*)mem + res;
size -= res;
tlen = file_data->position % MENUET_FILE_BLOCK_SIZE;
if (tlen)
{
res = _FileBufferSystem(file_data, temp_mem);
if (res < 0)
{
if (temp_mem) Free(temp_mem);
return read_len ? read_len : res;
}
res = _FileReadBuffer(file_data, mem, size);
read_len += res;
if (res >= size || file_data->length <= file_data->position ||
file_data->length - file_data->position <= res)
{
if (temp_mem) Free(temp_mem);
return read_len;
}
mem = (char*)mem + res;
size -= res;
}
if (size >= (file_data->buffer ? file_data->buffer[0] : MENUET_FILE_BLOCK_SIZE))
{
res = _FileReadSystem(file_data, mem, size);
if (res < 0)
{
if (temp_mem) Free(temp_mem);
return read_len ? read_len : res;
}
file_data->position += res;
read_len += res;
if (res < (size / MENUET_FILE_BLOCK_SIZE) * MENUET_FILE_BLOCK_SIZE)
{
if (temp_mem) Free(temp_mem);
return read_len;
}
mem = (char*)mem + res;
size -= res;
}
if (size)
{
res = _FileBufferSystem(file_data, temp_mem);
if (res < 0)
{
if (temp_mem) Free(temp_mem);
return read_len ? read_len : res;
}
read_len += _FileReadBuffer(file_data, mem, size, temp_mem);
}
if (temp_mem) Free(temp_mem);
return read_len;
}
// Inline functions.
inline unsigned int FileGetLength(TFileData file_data)
{
if (!file_data) return -1;
if (file_data->length == -1) FileTestRead(file_data);
return file_data->length;
}
}
#else // def __MENUET__
namespace Menuet
{
struct _FileDataStruct
{
unsigned int data;
};
}
#endif // else: def __MENUET__
#endif // ndef __MENUET_FILE_H_INCLUDED_

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,90 @@
#ifndef __MENUET_HEAP_H_INCLUDED_
#define __MENUET_HEAP_H_INCLUDED_
#include <menuet.h>
#include <memheap.h>
// Menuet memory heap interface.
namespace Menuet // All menuet functions, types and data are nested in the (Menuet) namespace.
{
void *Alloc(unsigned int size);
void *ReAlloc(void *mem, unsigned int size);
void Free(void *mem);
}
#ifdef __MENUET__
namespace Menuet
{
// Global variables
MemoryHeap::TFreeSpace _MenuetFreeSpace;
MemoryHeap::TMemBlock _MenuetMemBlock;
TMutex _MemHeapMutex = MENUET_MUTEX_INIT;
// Functions
void *_HeapInit(void *begin, void *use_end, void *end)
{
MemoryHeap::InitFreeSpace(_MenuetFreeSpace);
_MenuetMemBlock = MemoryHeap::CreateBlock(begin, end, _MenuetFreeSpace);
unsigned int use_beg = (unsigned int)MemoryHeap::BlockBegin(_MenuetMemBlock) +
MemoryHeap::BlockAddSize - MemoryHeap::BlockEndSize;
unsigned int use_size = (unsigned int)use_end;
if (use_size <= use_beg) return 0;
else use_size -= use_beg;
return MemoryHeap::Alloc(_MenuetFreeSpace, use_size);
}
bool _SetUseMemory(unsigned int use_mem);
int _RecalculateUseMemory(unsigned int use_mem);
void *Alloc(unsigned int size)
{
if (!size) return 0;
Lock(&_MemHeapMutex);
void *res = MemoryHeap::Alloc(_MenuetFreeSpace, size);
if (!res)
{
unsigned use_mem = (unsigned int)MemoryHeap::BlockEndFor(_MenuetMemBlock, size);
if (_SetUseMemory(_RecalculateUseMemory(use_mem)))
{
res = MemoryHeap::Alloc(_MenuetFreeSpace, size);
}
}
UnLock(&_MemHeapMutex);
return res;
}
void *ReAlloc(void *mem, unsigned int size)
{
Lock(&_MemHeapMutex);
void *res = MemoryHeap::ReAlloc(_MenuetFreeSpace, mem, size);
if (!res && size)
{
unsigned use_mem = (unsigned int)MemoryHeap::BlockEndFor(_MenuetMemBlock, size);
if (_SetUseMemory(_RecalculateUseMemory(use_mem)))
{
res = MemoryHeap::ReAlloc(_MenuetFreeSpace, mem, size);
}
}
UnLock(&_MemHeapMutex);
return res;
}
void Free(void *mem)
{
Lock(&_MemHeapMutex);
MemoryHeap::Free(_MenuetFreeSpace, mem);
UnLock(&_MemHeapMutex);
}
void _FreeAndThreadFinish(void *mem, int *exit_proc_now);
}
#endif // def __MENUET__
#endif // ndef __MENUET_HEAP_H_INCLUDED_

View File

@ -0,0 +1,97 @@
;/***
MenuetHeapInit = @@Menuet@_HeapInit$qpvt1t1
MenuetHeapAlloc = @@Menuet@Alloc$qui
MenuetHeapReAlloc = @@Menuet@ReAlloc$qpvui
MenuetHeapFree = @@Menuet@Free$qpv
MenuetHeapFreeAndThreadFinish = @Menuet@_FreeAndThreadFinish$qpvpi
define @Menuet@_SetUseMemory$qui
push ebx
mov eax,64
mov ebx,1
mov ecx,[esp+8]
int 0x40
pop ebx
test eax,eax
jnz Menuet_set_use_memory_nomem
push ecx
push dword [@Menuet@_MenuetMemBlock]
call @@MemoryHeap@ResizeBlock$q20MemoryHeap@TMemBlockpv
add esp,8
mov al,1
ret
Menuet_set_use_memory_nomem:
xor al,al
ret
enddef
define @Menuet@_RecalculateUseMemory$qui
mov eax,dword [esp+4]
mov ecx,(U_END + 3) and not 3
cmp eax,ecx
jna Menuet_recalculate_use_memory_min
push ebx
sub eax,ecx
mov ebx,6
mul ebx
dec ebx
div ebx
add eax,((U_END + 3) and not 3) + 3
and eax,not 3
pop ebx
ret
Menuet_recalculate_use_memory_min:
mov eax,ecx
ret
enddef
define @Menuet@_FreeAndThreadFinish$qpvpi
mov ebx,1
mov ecx,[esp+8]
jmp Menuet_heap_free_tf_wait
Menuet_heap_free_tf_wait_loop:
mov eax,5
int 0x40
shl ebx,1
cmp ebx,MENUET_MUTEX_MAX_TIME_WAIT
jna Menuet_heap_free_tf_wait
mov ebx,MENUET_MUTEX_MAX_TIME_WAIT
Menuet_heap_free_tf_wait:
cmp dword [ecx],0
jnz @Menuet@ExitProcess$qv
lock bts dword [@Menuet@_MemHeapMutex],0
jc Menuet_heap_free_tf_wait_loop
push dword [esp+4]
push @Menuet@_MenuetFreeSpace
call @@MemoryHeap@Free$qr21MemoryHeap@TFreeSpacepv
add esp,8
mov byte [@Menuet@_MemHeapMutex],0x40
or eax,-1
int 0x40
enddef
macro call func
{
if func eq @MemoryHeap@_FirstNotZeroBit$qui
bsf eax,[esp]
else if func eq @MemoryHeap@_CopyMemItemArray$quiuiui
xchg edi,[esp]
xchg esi,[esp+4]
mov ecx,[esp+8]
cld
sub ecx,esi
shr ecx,2
rep movs dword [edi],[esi]
xchg edi,[esp]
xchg esi,[esp+4]
else
call func
end if
}
;/**/

View File

@ -0,0 +1,16 @@
#ifndef __MENUET_LIB_H_INCLUDED_
#define __MENUET_LIB_H_INCLUDED_
// Menuet interface.
namespace Menuet // All menuet functions, types and data are nested in the (Menuet) namespace.
{
unsigned int StrLen(const char *str);
char *StrCopy(char *dest, const char *src);
void *MemCopy(void *dest, const void *src, unsigned int n);
void *MemSet(void *s, char c, unsigned int n);
double Floor(double x);
}
#endif // __MENUET_LIB_H_INCLUDED_

View File

@ -0,0 +1,118 @@
define @Menuet@StrLen$qpxc
push edi
cld
mov edi,[esp+8]
mov ecx,-1
xor al,al
repnz scas byte [edi]
not ecx
lea eax,[ecx-1]
pop edi
ret
enddef
define @Menuet@StrCopy$qpcpxc
push esi
push edi
cld
mov edi,[esp+16]
mov ecx,-1
mov esi,edi
xor al,al
repnz scas byte [edi]
not ecx
mov edi,[esp+12]
mov edx,ecx
mov eax,edi
shr ecx,2
rep movs dword [edi],[esi]
mov ecx,edx
and ecx,3
rep movs byte [edi],[esi]
pop edi
pop esi
ret
enddef
define @Menuet@MemCopy$qpvpxvui
push esi
push edi
cld
mov edi,[esp+12]
mov eax,edi
mov ecx,[esp+20]
mov esi,[esp+16]
mov edx,ecx
shr ecx,2
rep movs dword [edi],[esi]
mov ecx,edx
and ecx,3
rep movs byte [edi],[esi]
pop edi
pop esi
ret
enddef
define @Menuet@MemSet$qpvcui
push edi
cld
mov edi,[esp+8]
mov al,[esp+12]
mov ah,al
mov dx,ax
shl eax,16
mov ax,dx
mov ecx,[esp+16]
mov edx,ecx
shr ecx,2
rep stos dword [edi]
mov ecx,edx
and ecx,3
rep stos byte [edi]
pop edi
mov eax,[esp+4]
ret
enddef
define __ftol
sub esp,12
wait
fstcw word [esp+8]
wait
mov al,[esp+9]
or byte [esp+9],0x0c
fldcw word [esp+8]
fistp qword [esp]
mov [esp+9],al
fldcw word [esp+8]
mov eax,[esp]
mov edx,[esp+4]
add esp,12
ret
enddef
define @Menuet@Floor$qd
fld qword [esp+4]
mov ax,[esp+10]
shl ax,1
cmp ax,0x8680
ja Menuet_floor_end
mov ch,4
sub esp,2
wait
fstcw word [esp]
mov ax,0xf3ff
wait
mov dx,[esp]
and ax,dx
or ah,ch
mov [esp],ax
fldcw word [esp]
frndint
mov [esp],dx
fldcw word [esp]
add esp,2
Menuet_floor_end:
ret
enddef

View File

@ -0,0 +1,90 @@
use32
org 0x0
db 'MENUET01'
dd 0x1
dd MenuetEntryPoint
dd I_END
dd U_END+STACKSIZE+HEAPSIZE
dd U_END+STACKSIZE
dd @Menuet@CommandLine,0x0
ptr equ
offset equ
short equ
tbyte equ tword
PTR equ
OFFSET equ
SHORT equ
TBYTE equ TWORD
macro movsb a,b
{
if a eq & b eq
movsb
else
movsx a,b
end if
}
macro movsw a,b
{
if a eq & b eq
movsw
else
movsx a,b
end if
}
macro segment name {}
macro endseg name {}
macro usedef [link]
{
common
if ~link eq
virtual at 0
forward
dd link
common
end virtual
end if
}
macro define x,[link]
{
common
if x eq
else if used x
x:
usedef link
}
macro enddef [link]
{
common
usedef link
end if
}
macro newdef x,[link]
{
common
end if
if x eq
else if used x
x:
usedef link
}
macro nextdef x,[link]
{
common
usedef x
end if
if x eq
else if used x
x:
usedef link
}

View File

@ -0,0 +1,626 @@
#ifndef __MEMORY_HEAP_RBTREE_H_INCLUDED_
#define __MEMORY_HEAP_RBTREE_H_INCLUDED_
namespace MemoryHeap
{
typedef unsigned int TMemItem;
enum {NumTreeSmall = 8 * sizeof(TMemItem)};
// Memory heap interface.
struct TFreeSpace
{
TMemItem Small[NumTreeSmall], Min, SmallMask;
};
struct TMemBlock
{
TMemItem *Begin;
};
bool BlockValid(const TMemBlock &block); // Is the given memory block valid?
void *BlockBegin(const TMemBlock &block); // Return the beginning address of the block.
void *BlockEnd(const TMemBlock &block); // Return the ending address of the block.
TFreeSpace &BlockFreeSpace(const TMemBlock &block); // Return the free space of the block.
void InitFreeSpace(TFreeSpace &fs); // Initialize the free space.
TMemBlock NullBlock(); // Return null invalid block.
TMemBlock CreateBlock(void *begin, void *end, TFreeSpace &fs);
// Create a memory block with the given begin and end and add free space of it to (fs),
//_ give (BlockAddSize) bytes of the block for it's data.
//_ (Program can alloc (end - begin - BlockAddSize) bytes after it,
//_ that must be not less than (MemMinSize) ).
TMemBlock CreateBlock(void *begin, void *end);
// Create a memory block with the given begin and end and new free space for it,
//_ give (BlockAddSizeFS) bytes of the block for it's data.
//_ (Program can alloc (end - begin - BlockAddSizeFS) bytes after it,
//_ that must be not less than (MemMinSize) ).
void ResizeBlock(TMemBlock block, void *new_end); // Resize the memory block to the given new end.
void RemoveBlock(TMemBlock block); // Remove the given memory block.
void *BlockEndFor(TMemBlock block, unsigned int size);
// Return the new end of the block needed for (ResizeBlock) to alloc the given size of memory.
unsigned int BlockSize(TMemBlock block); // Return the size of the given block.
unsigned int MemSize(void *mem); // Return the size of the allocced memory.
void *Alloc(TFreeSpace &fs, unsigned int size);
// Alloc a memory in the given free space, give (MemAddSize) bytes for it's data.
void *ReAlloc(TFreeSpace &fs, unsigned int size, void *mem);
// ReAlloc the given memory, it must lie in the block with the given free space.
void Free(TFreeSpace &fs, void *mem);
// Free the given memory, it must lie in the block with the given free space.
// Macro definitions.
#define MEMORY_HEAP_ALIGN_DOWN(s) (MemoryHeap::TMemItem(s) & ~(MemoryHeap::MemAlign - 1))
#define MEMORY_HEAP_ALIGN_UP(s) ((MemoryHeap::TMemItem(s) + (MemoryHeap::MemAlign - 1)) & ~(MemoryHeap::MemAlign - 1))
#define MEMORY_HEAP_ITEM(s,k) ( ((MemoryHeap::TMemItem*)(s))[(k)] )
#define MEMORY_HEAP_NEXT(s) (MEMORY_HEAP_ITEM((s),-1))
#define MEMORY_HEAP_PREV(s) (MEMORY_HEAP_ITEM((s),-2))
#define MEMORY_HEAP_FREE(s) (MEMORY_HEAP_ITEM((s),-1) & 1)
// Constants.
enum {MemAlign = sizeof(TMemItem)};
enum {MemAddSize = MEMORY_HEAP_ALIGN_UP(2 * sizeof(TMemItem))};
enum {BlockEndSize = MemAddSize};
enum {BlockAddSize = MEMORY_HEAP_ALIGN_UP(4 * sizeof(TMemItem)) + BlockEndSize};
enum {BlockAddSizeFS = BlockAddSize + BlockEndSize + MEMORY_HEAP_ALIGN_UP(sizeof(TFreeSpace))};
enum {MemMinSize = MEMORY_HEAP_ALIGN_UP(2 * sizeof(TMemItem))};
// Inline functions.
inline bool BlockValid(const TMemBlock &block) {return block.Begin != 0;}
inline void *BlockBegin(const TMemBlock &block) {return (void*)block.Begin;}
inline void *BlockEnd(const TMemBlock &block) {return block.Begin ? (void*)block.Begin[1] : 0;}
inline TFreeSpace &BlockFreeSpace(const TMemBlock &block) {return *(TFreeSpace*)block.Begin[0];}
inline TMemBlock NullBlock() {TMemBlock block; block.Begin = 0; return block;}
inline void *BlockEndFor(TMemBlock block, unsigned int size)
{
TMemItem last = (TMemItem)block.Begin[1];
TMemItem prevlast = MEMORY_HEAP_PREV(last);
return (void*)( (MEMORY_HEAP_FREE(prevlast) ? prevlast : last) + MemAddSize +
((size <= MemMinSize) ? MemMinSize : MEMORY_HEAP_ALIGN_UP(size)) );
}
inline unsigned int BlockSize(TMemBlock block)
{
if (!block.Begin) return 0;
return (unsigned int)(block.Begin[1] - (TMemItem)block.Begin);
}
inline unsigned int MemSize(void *mem)
{
if (!mem) return 0;
TMemItem c = (TMemItem)mem;
return MEMORY_HEAP_NEXT(c) - c - MemAddSize;
}
// Free space item functions.
TMemItem _FirstNotZeroBit(TMemItem i)
{
TMemItem r = 0;
while ((i >>= 1) != 0) r++;
return r;
}
void _RBTreeRotate(TMemItem parent, TMemItem item, int side)
{
TMemItem temp = MEMORY_HEAP_ITEM(parent,0);
MEMORY_HEAP_ITEM(item,0) = temp;
if (temp)
{
if (MEMORY_HEAP_ITEM(temp,2) == parent)
{
MEMORY_HEAP_ITEM(temp,2) = item;
}
else MEMORY_HEAP_ITEM(temp,3) = item;
}
temp = MEMORY_HEAP_ITEM(item,side^1);
if (temp) MEMORY_HEAP_ITEM(temp,0) = parent;
MEMORY_HEAP_ITEM(parent,side) = temp;
MEMORY_HEAP_ITEM(parent,0) = item;
MEMORY_HEAP_ITEM(item,side^1) = parent;
temp = MEMORY_HEAP_ITEM(parent,1);
MEMORY_HEAP_ITEM(parent,1) = MEMORY_HEAP_ITEM(item,1);
MEMORY_HEAP_ITEM(item,1) = temp;
}
void InitFreeSpace(TFreeSpace &fs)
{
TMemItem i;
for (i = 0; i <= NumTreeSmall; i++) fs.Small[i] = 0;
fs.Min = 0; fs.SmallMask = 0;
}
void _FreeAdd(TFreeSpace &fs, TMemItem item)
{
TMemItem size = MEMORY_HEAP_NEXT(item) - item;
if (size < MemAddSize + MemMinSize + MemAlign * NumTreeSmall)
{
TMemItem s = (size - (MemAddSize + MemMinSize)) / MemAlign;
TMemItem &addto = fs.Small[s];
MEMORY_HEAP_ITEM(item,1) = (TMemItem)(&addto);
MEMORY_HEAP_ITEM(item,0) = (TMemItem)addto;
if (addto) MEMORY_HEAP_ITEM(addto,1) = item;
addto = item;
fs.SmallMask |= TMemItem(1) << s;
return;
}
TMemItem addto = fs.Min, parent, temp;
MEMORY_HEAP_ITEM(item,2) = 0;
MEMORY_HEAP_ITEM(item,3) = 0;
if (!addto)
{
MEMORY_HEAP_ITEM(item,0) = 0;
MEMORY_HEAP_ITEM(item,1) = 1;
fs.Min = item;
return;
}
MEMORY_HEAP_ITEM(item,1) = 0;
TMemItem side = 2;
if (MEMORY_HEAP_NEXT(addto) - addto >= size) fs.Min = item;
else
{
for (;;)
{
parent = MEMORY_HEAP_ITEM(addto,0);
if (!parent) break;
if (MEMORY_HEAP_NEXT(parent) - parent < size) addto = parent;
else break;
}
for (;;)
{
if (MEMORY_HEAP_NEXT(addto) - addto < size)
{
temp = MEMORY_HEAP_ITEM(addto,3);
if (!temp) {side = 3; break;}
addto = temp;
}
else
{
temp = MEMORY_HEAP_ITEM(addto,2);
if (!temp) break;
addto = temp;
}
}
}
MEMORY_HEAP_ITEM(item,0) = addto;
MEMORY_HEAP_ITEM(addto,side) = item;
for (;;)
{
if (MEMORY_HEAP_ITEM(addto,1) != 0) return;
parent = MEMORY_HEAP_ITEM(addto,0);
temp = MEMORY_HEAP_ITEM(parent,2);
if (temp == addto)
{
temp = MEMORY_HEAP_ITEM(parent,3);
side = 2;
}
else side = 3;
if (!temp || MEMORY_HEAP_ITEM(temp,1) != 0) break;
MEMORY_HEAP_ITEM(addto,1) = 1;
MEMORY_HEAP_ITEM(temp,1) = 1;
item = parent;
addto = MEMORY_HEAP_ITEM(item,0);
if (!addto) return;
MEMORY_HEAP_ITEM(item,1) = 0;
}
if (MEMORY_HEAP_ITEM(addto,side) != item)
{
temp = MEMORY_HEAP_ITEM(item,side);
if (temp) MEMORY_HEAP_ITEM(temp,0) = addto;
MEMORY_HEAP_ITEM(addto,side^1) = temp;
MEMORY_HEAP_ITEM(addto,0) = item;
MEMORY_HEAP_ITEM(item,side) = addto;
MEMORY_HEAP_ITEM(item,0) = parent;
MEMORY_HEAP_ITEM(parent,side) = item;
}
else item = addto;
_RBTreeRotate(parent, item, side);
}
void _FreeDel(TFreeSpace &fs, TMemItem item)
{
TMemItem size = MEMORY_HEAP_NEXT(item) - item;
if (size < MemAddSize + MemMinSize + MemAlign * NumTreeSmall)
{
TMemItem prev = MEMORY_HEAP_ITEM(item,1);
TMemItem next = MEMORY_HEAP_ITEM(item,0);
MEMORY_HEAP_ITEM(prev,0) = next;
if (next) MEMORY_HEAP_ITEM(next,1) = prev;
else
{
TMemItem s = (size - (MemAddSize + MemMinSize)) / MemAlign;
if (!fs.Small[s]) fs.SmallMask &= ~(TMemItem(1) << s);
}
return;
}
TMemItem parent, temp, second, add;
TMemItem side = 2;
temp = MEMORY_HEAP_ITEM(item,3);
if (temp)
{
for (;;)
{
second = temp;
temp = MEMORY_HEAP_ITEM(temp,2);
if (!temp) break;
}
if (fs.Min == item) fs.Min = second;
add = MEMORY_HEAP_ITEM(second,3);
parent = MEMORY_HEAP_ITEM(second,0);
if (parent == item) {parent = second; side = 3;}
else
{
temp = MEMORY_HEAP_ITEM(item,3);
MEMORY_HEAP_ITEM(second,3) = temp;
MEMORY_HEAP_ITEM(temp,0) = second;
}
temp = MEMORY_HEAP_ITEM(item,2);
MEMORY_HEAP_ITEM(second,2) = temp;
if (temp) MEMORY_HEAP_ITEM(temp,0) = second;
temp = MEMORY_HEAP_ITEM(item,0);
MEMORY_HEAP_ITEM(second,0) = temp;
if (temp)
{
if (MEMORY_HEAP_ITEM(temp,2) == item)
{
MEMORY_HEAP_ITEM(temp,2) = second;
}
else MEMORY_HEAP_ITEM(temp,3) = second;
}
MEMORY_HEAP_ITEM(parent,side) = add;
if (add) MEMORY_HEAP_ITEM(add,0) = parent;
bool color = MEMORY_HEAP_ITEM(second,1);
MEMORY_HEAP_ITEM(second,1) = MEMORY_HEAP_ITEM(item,1);
if (!color) return;
}
else
{
if (fs.Min == item) fs.Min = MEMORY_HEAP_ITEM(item,0);
add = MEMORY_HEAP_ITEM(item,2);
parent = MEMORY_HEAP_ITEM(item,0);
if (add) MEMORY_HEAP_ITEM(add,0) = parent;
if (parent)
{
if (MEMORY_HEAP_ITEM(parent,2) == item)
{
MEMORY_HEAP_ITEM(parent,2) = add;
}
else
{
MEMORY_HEAP_ITEM(parent,3) = add;
side = 3;
}
}
else
{
if (add) MEMORY_HEAP_ITEM(add,1) = 1;
return;
}
if (!MEMORY_HEAP_ITEM(item,1)) return;
}
if (add && !MEMORY_HEAP_ITEM(add,1))
{
MEMORY_HEAP_ITEM(add,1) = 1;
return;
}
for (;;)
{
second = MEMORY_HEAP_ITEM(parent,side^1);
if (!MEMORY_HEAP_ITEM(second,1))
{
_RBTreeRotate(parent, second, side^1);
second = MEMORY_HEAP_ITEM(parent,side^1);
}
temp = MEMORY_HEAP_ITEM(second,side^1);
if (temp && !MEMORY_HEAP_ITEM(temp,1))
{
MEMORY_HEAP_ITEM(temp,1) = 1;
break;
}
temp = MEMORY_HEAP_ITEM(second,side);
if (temp && !MEMORY_HEAP_ITEM(temp,1))
{
_RBTreeRotate(second, temp, side);
MEMORY_HEAP_ITEM(second,1) = 1;
second = temp;
break;
}
MEMORY_HEAP_ITEM(second,1) = 0;
if (!MEMORY_HEAP_ITEM(parent,1))
{
MEMORY_HEAP_ITEM(parent,1) = 1;
return;
}
second = parent;
parent = MEMORY_HEAP_ITEM(second,0);
if (!parent) return;
if (MEMORY_HEAP_ITEM(parent,2) == second) side = 2;
else side = 3;
}
_RBTreeRotate(parent, second, side^1);
}
TMemItem _FreeFindAfter(TMemItem item, TMemItem size)
{
if (!item) return 0;
TMemItem paritem, s;
if (MEMORY_HEAP_NEXT(item) - item >= size) return item;
for (;;)
{
paritem = MEMORY_HEAP_ITEM(item,0);
if (!paritem) break;
s = MEMORY_HEAP_NEXT(paritem) - paritem;
if (s == size) return paritem;
if (s < size) item = paritem;
else break;
}
MEMORY_HEAP_ITEM(item,3);
for (;;)
{
if (!item) return paritem;
s = MEMORY_HEAP_NEXT(item) - item;
if (s == size) return item;
if (s < size) item = MEMORY_HEAP_ITEM(item,3);
else
{
paritem = item;
item = MEMORY_HEAP_ITEM(item,2);
}
}
}
TMemItem _FreeFind(TFreeSpace &fs, TMemItem size)
{
TMemItem item, nextitem, s;
if (size < MemAddSize + MemMinSize + MemAlign * NumTreeSmall)
{
TMemItem m, t;
s = (size - (MemAddSize + MemMinSize)) / MemAlign;
item = fs.Small[s];
if (item) return item;
if (size < MemAlign * NumTreeSmall)
{
t = size / MemAlign;
m = fs.SmallMask >> t;
if (m) return fs.Small[t + _FirstNotZeroBit(m)];
else if (fs.Min) return fs.Min;
}
else
{
item = _FreeFindAfter(fs.Min, size + 1 + MemAddSize + MemMinSize);
if (item) return item;
}
m = fs.SmallMask >> s;
if (m) return fs.Small[s + _FirstNotZeroBit(m)];
else return fs.Min;
}
item = _FreeFindAfter(fs.Min, ++size);
if (!item) return 0;
s = MEMORY_HEAP_NEXT(item) - item;
if (s == size) return item;
size += MemAddSize + MemMinSize;
if (s >= size) return item;
nextitem = _FreeFindAfter(item, size);
return nextitem ? nextitem : item;
}
// Block functions.
inline void _CreateBlockEnd(TMemBlock &block, TFreeSpace &fs, TMemItem c, TMemItem e)
{
block.Begin[0] = (TMemItem)(&fs);
if (e - c < TMemItem(MemAddSize + MemMinSize))
{
MEMORY_HEAP_NEXT(c) = 0;
block.Begin[1] = c;
}
else
{
MEMORY_HEAP_NEXT(c) = e + 1;
_FreeAdd(fs, c);
MEMORY_HEAP_PREV(e) = c;
MEMORY_HEAP_NEXT(e) = 0;
block.Begin[1] = e;
}
}
TMemBlock CreateBlock(void *begin, void *end, TFreeSpace &fs)
{
TMemBlock block = {0};
TMemItem b = MEMORY_HEAP_ALIGN_UP(begin);
TMemItem e = MEMORY_HEAP_ALIGN_DOWN(end);
if (e <= b || e - b < TMemItem(BlockAddSize - MemAddSize)) return block;
block.Begin = (TMemItem*)b;
b += MEMORY_HEAP_ALIGN_UP(4 * sizeof(TMemItem));
MEMORY_HEAP_PREV(b) = 0;
_CreateBlockEnd(block, fs, b, e);
return block;
}
TMemBlock CreateBlock(void *begin, void *end)
{
TMemBlock block = {0};
TMemItem b = MEMORY_HEAP_ALIGN_UP(begin);
TMemItem e = MEMORY_HEAP_ALIGN_DOWN(end);
if (e <= b || e - b < TMemItem(BlockAddSizeFS - MemAddSize)) return block;
block.Begin = (TMemItem*)b;
b += MEMORY_HEAP_ALIGN_UP(4 * sizeof(TMemItem));
TMemItem c = b + MemAddSize + MEMORY_HEAP_ALIGN_UP(sizeof(TFreeSpace));
MEMORY_HEAP_PREV(b) = 0;
MEMORY_HEAP_NEXT(b) = c;
MEMORY_HEAP_PREV(c) = b;
InitFreeSpace(*(TFreeSpace*)b);
_CreateBlockEnd(block, *(TFreeSpace*)b, c, e);
return block;
}
void ResizeBlock(TMemBlock block, void *new_end)
{
if (!BlockValid(block)) return;
TMemItem e = MEMORY_HEAP_ALIGN_DOWN(new_end);
TMemItem c = block.Begin[1];
TFreeSpace &fs = *(TFreeSpace*)block.Begin[0];
do
{
if (c == e) return;
else if (c > e)
{
while ((c = MEMORY_HEAP_PREV(c)) > e)
{
if (MEMORY_HEAP_FREE(c)) _FreeDel(fs, c);
}
if (!c) {block.Begin = 0; return;}
if (MEMORY_HEAP_FREE(c))
{
_FreeDel(fs, c);
if (e - c < TMemItem(MemAddSize + MemMinSize)) e = c;
else
{
MEMORY_HEAP_NEXT(c) = e + 1;
_FreeAdd(*(TFreeSpace*)block.Begin[0], c);
break;
}
}
else if (e - c >= TMemItem(MemAddSize + MemMinSize))
{
MEMORY_HEAP_NEXT(c) = e; break;
}
MEMORY_HEAP_NEXT(c) = 0;
block.Begin[1] = c;
if (c == e) return;
}
TMemItem pc = MEMORY_HEAP_PREV(c);
if (pc && MEMORY_HEAP_FREE(pc)) _FreeDel(fs, c = pc);
else if (e - c < TMemItem(MemAddSize + MemMinSize)) return;
MEMORY_HEAP_NEXT(c) = e + 1;
_FreeAdd(fs, c);
} while(false);
MEMORY_HEAP_PREV(e) = c;
MEMORY_HEAP_NEXT(e) = 0;
block.Begin[1] = e;
}
void RemoveBlock(TMemBlock block)
{
if (!BlockValid(block)) return;
TMemItem e = block.Begin[1];
TFreeSpace &fs = *(TFreeSpace*)block.Begin[0];
while ((e = MEMORY_HEAP_PREV(e)) != 0)
{
if (MEMORY_HEAP_FREE(e)) _FreeDel(fs, e);
}
block.Begin = 0;
}
// Free space functions.
void _CopyMemItemArray(TMemItem dest, TMemItem src, TMemItem end)
{
TMemItem k = (end - src) / sizeof(TMemItem);
TMemItem *d = (TMemItem*)dest;
TMemItem *s = (TMemItem*)src;
while (k--) *(d++) = *(s++);
}
void *Alloc(TFreeSpace &fs, unsigned int size)
{
if (!size) return 0;
TMemItem s = MEMORY_HEAP_ALIGN_UP(size) + MemAddSize;
if (s < MemAddSize + MemMinSize) s = MemAddSize + MemMinSize;
TMemItem c = _FreeFind(fs, s);
if (!c) return 0;
_FreeDel(fs, c);
TMemItem nc = --MEMORY_HEAP_NEXT(c);
TMemItem mc = c + s;
if (nc - (MemAddSize + MemMinSize) >= mc)
{
MEMORY_HEAP_NEXT(c) = mc;
MEMORY_HEAP_PREV(mc) = c;
MEMORY_HEAP_NEXT(mc) = nc + 1;
MEMORY_HEAP_PREV(nc) = mc;
_FreeAdd(fs, mc);
}
return (void*)c;
}
void *ReAlloc(TFreeSpace &fs, void *mem, unsigned int size)
{
if (!mem) return Alloc(fs, size);
if (!size) {Free(fs, mem); return 0;}
TMemItem s = MEMORY_HEAP_ALIGN_UP(size) + MemAddSize;
TMemItem c = (TMemItem)mem;
TMemItem mc = MEMORY_HEAP_NEXT(c);
TMemItem nc = MEMORY_HEAP_NEXT(mc);
if (--nc & 1) nc = mc;
if (s < MemAddSize + MemMinSize) s = MemAddSize + MemMinSize;
if (nc - c < s)
{
mem = Alloc(fs, size);
if (mem)
{
_CopyMemItemArray((TMemItem)mem, c, mc - MemAddSize);
Free(fs, (void*)c);
return mem;
}
else
{
TMemItem pc = MEMORY_HEAP_PREV(c);
if (pc && MEMORY_HEAP_FREE(pc) && nc - pc >= s)
{
_FreeDel(fs, pc);
_CopyMemItemArray(pc, c, mc - MemAddSize);
c = pc;
}
else return 0;
}
}
if (mc < nc) _FreeDel(fs, mc);
mc = c + s;
if (nc - (MemAddSize + MemMinSize) >= mc)
{
MEMORY_HEAP_NEXT(c) = mc;
MEMORY_HEAP_PREV(mc) = c;
MEMORY_HEAP_NEXT(mc) = nc + 1;
MEMORY_HEAP_PREV(nc) = mc;
_FreeAdd(fs, mc);
}
else
{
MEMORY_HEAP_NEXT(c) = nc;
MEMORY_HEAP_PREV(nc) = c;
}
return (void*)c;
}
int free_a = 0;
void Free(TFreeSpace &fs, void *mem)
{
TMemItem c = (TMemItem)mem;
if (!c) return;
TMemItem pc = MEMORY_HEAP_PREV(c);
TMemItem mc = MEMORY_HEAP_NEXT(c);
TMemItem nc = MEMORY_HEAP_NEXT(mc);
if (--nc & 1) nc = mc;
else _FreeDel(fs, mc);
if (free_a == 1) return;
if (pc && MEMORY_HEAP_FREE(pc)) _FreeDel(fs, c = pc);
MEMORY_HEAP_NEXT(c) = nc + 1;
MEMORY_HEAP_PREV(nc) = c;
if (free_a == 2) return;
_FreeAdd(fs, c);
}
}
#endif // ndef __MEMORY_HEAP_RBTREE_H_INCLUDED_

View File

@ -0,0 +1,537 @@
#ifndef __MENUET_H_INCLUDED_
#define __MENUET_H_INCLUDED_
#include <me_lib.h>
// Menuet interface.
namespace Menuet // All menuet functions, types and data are nested in the (Menuet) namespace.
{
const char *DebugPrefix = "User program: ";
char CommandLine[257];
struct TWindowData // Data for drawing a window.
{
unsigned short WindowType, HeaderType;
unsigned long WindowColor, HeaderColor, BorderColor, TitleColor;
const char *Title;
};
struct TStartData // This structure is used only for MenuetOnStart function.
{
unsigned short Left, Width, Top, Height; // Initial window rectangle.
TWindowData WinData;
};
typedef void **TThreadData; // Thread data are the fast identifier of thread, contains user dword in
//_ the zero element and stack beginning (or zero if it is unknown) in the first element.
//_ The stack will be deleted from dynamic memory at the finish of the thread if stack beginning is not zero.
struct TMutex; // Simple mutex can be locked only once at a time.
#define MENUET_MUTEX_INIT {} // Simple mutex initializer, cat be redefined in a realization of the library
struct TRecMutex; // Recursive mutex can be locked many times by a single thread at a time.
#define MENUET_REC_MUTEX_INIT {} // Recursive mutex initializer, cat be redefined in a realization of the library
// Some functions have two forms: the fast form with (thread_data) parameter and the form without it.
// Note: pass only thread data of current thread as (thread_data) parameter to these functions.
void Main(); // Main function is called at program startup.
void* ThreadMain(void *user = 0, void *stack_begin = 0);
// Called at thread startup, (user) is placed in thread data as a user dword,
//_ (stack_begin) is placed in thread data as a stack beginning.
//_ Return new value of stack beginning that can be changed in the thread data.
void GetWindowData(TWindowData &win_data); // Write current window data to (win_data).
void GetWindowData(TWindowData &win_data, TThreadData thread_data);
void SetWindowData(const TWindowData &win_data); // Replace current window data by (win_data).
void SetWindowData(const TWindowData &win_data, TThreadData thread_data);
void CloseWindow(); // Close current window when returning to message loop.
void CloseWindow(TThreadData thread_data);
void Redraw(int frame = 0); // Redraw current window immediately, if (frame) is positive redraw the frame too,
void Redraw(int frame, TThreadData thread_data); //_ if (frame) is negative redraw only invalideted window.
void Invalidate(int frame = 0); // Redraw current window when no message will be is the queue,
void Invalidate(int frame, TThreadData thread_data); //_ if (frame) is positive redraw the frame too,
//_ if (frame) is negative do nothing.
void MoveWindow(const int window_rect[/* 4 */]); // Move and resize current window.
void Abort(); // Abnormally terminate a program.
void ExitProcess(); // Exit from the process, don't call any destructors of global varyables
void ExitThread(); // Exit from the current thread
void ExitThread(TThreadData thread_data);
void ReturnMessageLoop(); // Return to the message loop of the thread. Exit from the thread
void ReturnMessageLoop(TThreadData thread_data); //_ if it is called from (MenuetOnStart).
void Delay(unsigned int time); // Delay the execution of the program during (time) hundredth seconds.
unsigned int Clock(); // Return the time from starting of the system to this moment in hundredth of seconds.
int GetPackedTime(); // Return the current time of day in binary-decimal format 0x00SSMMHH.
void GetTime(int t[/* 3 */]); // Write the current time to (t): t[0] = second, t[1] = minute, t[2] = hour.
int GetPackedDate(); // Return the current date in binary-decimal format 0x00YYDDMM.
void GetDate(int d[/* 3 */]); // Write the current date to (d): d[0] = day, d[1] = month, d[2] = year.
void GetTimeDate(int t[/* 6 */]); // Write the current time and date to (t): t[0] = second,
//_ t[1] = minute, t[2] = hour, t[3] = day, t[4] = month, t[5] = year.
void ReadCommonColors(unsigned int colors[/* 10 */]); // Writes standart window colors to (colors).
unsigned int GetProcessInfo(unsigned int *use_cpu, char process_name[/* 13 */], unsigned int *use_memory,
unsigned int *pid, int window_rect[/* 4 */], unsigned int pid_for = -1);
// Write (pid_for) process information to variables parameters points, return
//_ the number of processes. (pid_for) equal to (-1) means current process.
unsigned int GetPid(); // Return the current thread identifier (pid).
unsigned int GetPid(TThreadData thread_data);
TThreadData GetThreadData(); // Return the thread data of the current thread.
TThreadData GetThreadData(unsigned int pid); // Return the thread data of the thread with the given pid.
void* GetPicture(unsigned short &width, unsigned short &height);
void* GetPicture(unsigned short &width, unsigned short &height, TThreadData thread_data);
// Return the picture on the window and write its width and height to (width) and (height).
void SetPicture(void *picture, unsigned short width, unsigned short height);
void SetPicture(void *picture, unsigned short width, unsigned short height, TThreadData thread_data);
// Replace the picture on the window by the given picture with the given width and height.
void GetBorderHeader(unsigned short &border_size, unsigned short &header_size);
void GetBorderHeader(unsigned short &border_size, unsigned short &header_size, TThreadData thread_data);
// Write the border thickness to (border_size) and header height to (header_size).
void GetClientSize(unsigned short &width, unsigned short &height);
void GetClientSize(unsigned short &width, unsigned short &height, TThreadData thread_data);
// Write the client area width and height to (width) and (height) parameters.
void GetClientSize(unsigned short &width, unsigned short &height, int win_width, int win_height);
void GetClientSize(unsigned short &width, unsigned short &height, int win_width, int win_height, TThreadData thread_data);
// Write the client area size of window with the width (win_width)
//_ and height (win_height) to (width) and (height) parameters.
void GetScreenSize(unsigned short &width, unsigned short &height);
// Write the screen width and height to (width) and (height) parameters.
void InitMutex(TMutex *mutex); // Initialize the simple mutex.
void InitRecMutex(TRecMutex *mutex); // Initialize the recursive mutex.
bool TryLock(TMutex *mutex); // Try to lock the mutex without waitting, return true if lock.
bool TryLock(TRecMutex *mutex);
bool TryLock(TRecMutex *mutex, TThreadData thread_data);
bool TryLock(TRecMutex *mutex, unsigned int pid);
void Lock(TMutex *mutex); // Lock mutex and wait for it if this necessary.
void Lock(TRecMutex *mutex);
void Lock(TRecMutex *mutex, TThreadData thread_data);
void Lock(TRecMutex *mutex, unsigned int pid);
bool LockTime(TMutex *mutex, int time);
bool LockTime(TRecMutex *mutex, int time); // Lock mutex and wait for it during (time) hundredth seconds.
bool LockTime(TRecMutex *mutex, int time, TThreadData thread_data);
bool LockTime(TRecMutex *mutex, int time, unsigned int pid);
void UnLock(TMutex *mutex); // Unlock mutex
void UnLock(TRecMutex *mutex);
void UnLock(TRecMutex *mutex, TThreadData thread_data);
void UnLock(TRecMutex *mutex, unsigned int pid);
void DebugPutChar(char c); // Put the character to the debug board.
void DebugPutString(const char *s); // Put the string to the debug board.
int GetKey(); // Return key pressed by user or -1 if no key was pressed.
int GetMouseButton(); // Return buttons pressed: 0 - no buttons, 1 - left button, 2 - right button, 3 - both buttons.
void GetMousePosition(short &x, short &y, bool absolute = false);
// Write mouse position to (x) and (y): absolute if (absolute) is true and relative the window otherwise.
void GetMousePosPicture(short &x, short &y);
int GetThreadNumber(); // Return the number of threads currently executing.
bool WasThreadCreated(); // Return true if there was created at least one thread except the main thred.
unsigned int CreateThread(void *user = 0, unsigned int stack_size = 0, void *stack_end = 0);
// Create a new thread with the user dword (user) and stack pointer (stack_end).
//_ If (stack_end) is zero, create stack in dynamic memory of size (stack_size) or
//_ the same size as the main thread if (stack_size) less that 4096. Set the beginning
//_ of the stack if (stack_end) is zero or (stack_size) is not zero, in this case stack
//_ will be deleted automaticaly from dynamic memory at the finish of the thread.
}
// Function, defined outside.
bool MenuetOnStart(Menuet::TStartData &me_start, Menuet::TThreadData thread_data);
// Window will be created iff return value is true.
bool MenuetOnClose(Menuet::TThreadData thread_data); // Window will be closed iff return value is true.
int MenuetOnIdle(Menuet::TThreadData thread_data); // Return the time to wait next message.
void MenuetOnSize(int window_rect[/* 4 */], Menuet::TThreadData thread_data); // When the window is resized.
void MenuetOnKeyPress(Menuet::TThreadData thread_data); // When user press a key.
void MenuetOnMouse(Menuet::TThreadData thread_data); // When user move a mouse.
#ifdef __MENUET__
namespace Menuet
{
// Structures.
struct TMutex // Simple mutex can be locked only once at a time.
{
unsigned int mut;
};
#undef MENUET_MUTEX_INIT
#define MENUET_MUTEX_INIT {0x40} // Simple mutex initializer, cat be redefined in a realization of the library
struct TRecMutex // Recursive mutex can be locked many times by a single thread at a time.
{
unsigned int mut, pid;
};
#undef MENUET_REC_MUTEX_INIT
#define MENUET_REC_MUTEX_INIT {0x20,-1} // Recursive mutex initializer, cat be redefined in a realization of the library
// Global variables.
volatile TThreadData _ThreadTable[256];
volatile unsigned int _ThreadScanCount[2] = {0, 0};
volatile int _ThreadNumber = 1;
volatile int _ExitProcessNow = 0;
TMutex _ThreadMutex = MENUET_MUTEX_INIT;
unsigned int _ThreadSavedBegProc[4];
// Inline functions.
inline void GetWindowData(TWindowData &win_data) {GetWindowData(win_data, GetThreadData());}
inline void SetWindowData(const TWindowData &win_data) {SetWindowData(win_data, GetThreadData());}
inline void CloseWindow() {CloseWindow(GetThreadData());}
inline void Redraw(int frame) {Redraw(frame, GetThreadData());}
inline void Invalidate(int frame) {Invalidate(frame, GetThreadData());}
inline void* GetPicture(unsigned short &width, unsigned short &height)
{
return GetPicture(width, height, GetThreadData());
}
inline void SetPicture(void *picture, unsigned short width, unsigned short height)
{
SetPicture(picture, width, height, GetThreadData());
}
inline void GetBorderHeader(unsigned short &border_size, unsigned short &header_size)
{
GetBorderHeader(border_size, header_size, GetThreadData());
}
inline void GetClientSize(unsigned short &width, unsigned short &height)
{
unsigned int pid;
int rect[4];
GetProcessInfo(0, 0, 0, &pid, rect);
GetClientSize(width, height, rect[2], rect[3], GetThreadData(pid));
}
inline void GetClientSize(unsigned short &width, unsigned short &height, TThreadData thread_data)
{
int rect[4];
GetProcessInfo(0, 0, 0, 0, rect);
GetClientSize(width, height, rect[2], rect[3], thread_data);
}
inline void GetClientSize(unsigned short &width, unsigned short &height, int win_width, int win_height)
{
GetClientSize(width, height, win_width, win_height, GetThreadData());
}
inline void GetTimeDate(int t[/* 6 */]) {GetTime(t); GetDate(t + 3);}
inline void InitMutex(TMutex *mutex) {mutex->mut = 0;}
inline void InitRecMutex(TRecMutex *mutex) {mutex->mut = 0; mutex->pid = -1;}
inline bool TryLock(TRecMutex *mutex) {return TryLock(mutex, GetPid());}
inline bool TryLock(TRecMutex *mutex, TThreadData thread_data) {return TryLock(mutex, GetPid(thread_data));}
inline void Lock(TRecMutex *mutex) {Lock(mutex, GetPid());}
inline void Lock(TRecMutex *mutex, TThreadData thread_data) {Lock(mutex, GetPid(thread_data));}
inline bool LockTime(TRecMutex *mutex, int time) {return LockTime(mutex, time, GetPid());}
inline bool LockTime(TRecMutex *mutex, int time, TThreadData thread_data)
{return LockTime(mutex, time, GetPid(thread_data));}
inline void UnLock(TRecMutex *mutex) {UnLock(mutex, GetPid());}
inline void UnLock(TRecMutex *mutex, TThreadData thread_data) {UnLock(mutex, GetPid(thread_data));}
inline int GetThreadNumber() {return _ThreadNumber;}
// Constants from fasm.
#include <me_func.inc>
// Functions.
unsigned char _HashByte(unsigned int value);
unsigned short _HashWord(unsigned int value);
unsigned int _HashDword(unsigned int value);
void _GetStartData(TStartData &start_data, TThreadData thread_data)
{
start_data.Left = (unsigned short)((unsigned long)thread_data[MENUET_THREAD_DATA_X] >> 16);
start_data.Width = (unsigned short)((unsigned long)thread_data[MENUET_THREAD_DATA_X]);
start_data.Top = (unsigned short)((unsigned long)thread_data[MENUET_THREAD_DATA_Y] >> 16);
start_data.Height = (unsigned short)((unsigned long)thread_data[MENUET_THREAD_DATA_Y]);
GetWindowData(start_data.WinData, thread_data);
}
void _SetStartData(const TStartData &start_data, TThreadData thread_data)
{
(unsigned long&)thread_data[MENUET_THREAD_DATA_X] =
((unsigned int)start_data.Left << 16) | start_data.Width;
(unsigned long&)thread_data[MENUET_THREAD_DATA_Y] =
((unsigned int)start_data.Top << 16) | start_data.Height;
SetWindowData(start_data.WinData, thread_data);
}
void _ApplyCommonColors(TWindowData &win_data)
{
unsigned int colors[10];
ReadCommonColors(colors);
win_data.WindowColor = colors[5];
win_data.HeaderColor = colors[1];
win_data.BorderColor = colors[0];
win_data.TitleColor = colors[4];
}
void _SetValueFunctionPriority(void *beg, int n)
{
int k, i;
unsigned char num[256];
for (i = 0; i < 256; i++) num[i] = 0;
for (k = 0; k < n; k++)
{
i = ((unsigned char*)beg + 6*k)[1];
((unsigned char*)beg + 6*k)[0] = num[i];
if (num[i] != 255) num[i]++;
}
}
void _CallFunctionPriority(void *beg, void *end, bool reverse = false)
{
struct _Local
{
static int cmp(void *beg, int i, int j)
{
unsigned char *x = (unsigned char*)beg + 6*i;
unsigned char *y = (unsigned char*)beg + 6*j;
if (*(unsigned short*)x < *(unsigned short*)y) return -1;
if (*(unsigned short*)x > *(unsigned short*)y) return 1;
return 0;
}
static void swap(void *beg, int i, int j)
{
unsigned char *x = (unsigned char*)beg + 6*i;
unsigned char *y = (unsigned char*)beg + 6*j;
short s;
int t;
s = *(short*)x; *(short*)x = *(short*)y; *(short*)y = s;
x += 2; y += 2;
t = *(int*)x; *(int*)x = *(int*)y; *(int*)y = t;
}
static void call(void *beg, int i)
{
unsigned char *x = (unsigned char*)beg + 6*i;
(*(void(**)())(x+2))();
}
};
if (!beg || !end || end <= beg) return;
int i, j, k, m, n;
n = ((unsigned char*)end - (unsigned char*)beg) / 6;
if (n <= 0) return;
_SetValueFunctionPriority(beg, n);
m = n; k = n;
while (m > 1)
{
if (k > 0) k--;
else _Local::swap(beg, 0, --m);
j = k;
for (;;)
{
i = j;
if (2*i + 1 >= m) break;
if (_Local::cmp(beg, 2*i + 1, j) > 0) j = 2*i + 1;
if (2*i + 2 < m && _Local::cmp(beg, 2*i + 2, j) > 0) j = 2*i + 2;
if (i == j) break;
_Local::swap(beg, i, j);
}
}
if (!reverse)
{
for (k = 0; k < n; k++) _Local::call(beg, k);
}
else
{
for (k = n-1; k >= 0; k--) _Local::call(beg, k);
}
}
bool _CallStart(TThreadData thread_data, void *init = 0, void *init_end = 0)
{
struct _TThreadDataTemplate
{
unsigned int data[12];
};
static const _TThreadDataTemplate _ThreadDataTemplate =
{{3, 0x00320100, 0x00320100, 0x03FFFFFF, 0x806060FF, 0x00000000, 0x00FFFF40, 0, 0, 0, -1, -1}};
unsigned int pid = GetPid();
volatile TThreadData *thread_table_item;
Lock(&_ThreadMutex);
if (_ExitProcessNow) ExitProcess();
thread_table_item = &_ThreadTable[_HashByte(pid)];
thread_data[MENUET_THREAD_DATA_NEXT] = (void*)*thread_table_item;
(unsigned int&)thread_data[MENUET_THREAD_DATA_PID] = pid;
*(_TThreadDataTemplate*)(thread_data + MENUET_THREAD_DATA_FLAG) = _ThreadDataTemplate;
*thread_table_item = thread_data;
UnLock(&_ThreadMutex);
if (_ExitProcessNow) ExitProcess();
_CallFunctionPriority(init, init_end, false);
TStartData start_data;
_GetStartData(start_data, thread_data);
_ApplyCommonColors(start_data.WinData);
(unsigned int&)thread_data[MENUET_THREAD_DATA_FLAG] |= 0x40000000;
thread_data[MENUET_THREAD_DATA_TITLE] = (void*)(&start_data);
if (!MenuetOnStart(start_data, thread_data)) return false;
(unsigned int&)thread_data[MENUET_THREAD_DATA_FLAG] &= ~0x40000000;
_SetStartData(start_data, thread_data);
return true;
}
void _RemoveThreadData(TThreadData thread_data, void *exit = 0, void *exit_end = 0)
{
_CallFunctionPriority(exit, exit_end, true);
volatile TThreadData *thread_table_item;
Lock(&_ThreadMutex);
if (_ExitProcessNow) ExitProcess();
thread_table_item = &_ThreadTable[_HashByte(GetPid(thread_data))];
while (*thread_table_item)
{
if (*thread_table_item == thread_data)
{
*thread_table_item = (TThreadData)thread_data[MENUET_THREAD_DATA_NEXT];
break;
}
thread_table_item = (TThreadData*)(*thread_table_item + MENUET_THREAD_DATA_NEXT);
}
UnLock(&_ThreadMutex);
if (_ExitProcessNow) ExitProcess();
}
void GetWindowData(TWindowData &win_data, TThreadData thread_data)
{
if ((unsigned int)thread_data[MENUET_THREAD_DATA_FLAG] & 0x40000000)
{
win_data = ((TStartData*)thread_data[MENUET_THREAD_DATA_TITLE])->WinData;
return;
}
win_data.WindowType = (unsigned short)((unsigned int)thread_data[MENUET_THREAD_DATA_C_WINDOW] >> 24);
win_data.HeaderType = (unsigned short)((unsigned int)thread_data[MENUET_THREAD_DATA_C_HEADER] >> 24);
win_data.WindowColor = (unsigned int)thread_data[MENUET_THREAD_DATA_C_WINDOW] & 0xFFFFFF;
win_data.HeaderColor = (unsigned int)thread_data[MENUET_THREAD_DATA_C_HEADER] & 0xFFFFFF;
win_data.BorderColor = (unsigned int)thread_data[MENUET_THREAD_DATA_C_BORDER] & 0xFFFFFF;
win_data.TitleColor = (unsigned int)thread_data[MENUET_THREAD_DATA_C_TITLE] & 0xFFFFFF;
win_data.Title = (char*)thread_data[MENUET_THREAD_DATA_TITLE];
}
void SetWindowData(const TWindowData &win_data, TThreadData thread_data)
{
if ((unsigned int)thread_data[MENUET_THREAD_DATA_FLAG] & 0x40000000)
{
((TStartData*)thread_data[MENUET_THREAD_DATA_TITLE])->WinData = win_data;
return;
}
(unsigned int&)thread_data[MENUET_THREAD_DATA_C_WINDOW] =
((unsigned int)win_data.WindowType << 24) | (win_data.WindowColor & 0xFFFFFF);
(unsigned int&)thread_data[MENUET_THREAD_DATA_C_HEADER] =
((unsigned int)win_data.HeaderType << 24) | (win_data.HeaderColor & 0xFFFFFF);
(unsigned int&)thread_data[MENUET_THREAD_DATA_C_BORDER] = win_data.BorderColor & 0xFFFFFF;
(unsigned int&)thread_data[MENUET_THREAD_DATA_C_TITLE] = win_data.TitleColor & 0xFFFFFF;
thread_data[MENUET_THREAD_DATA_TITLE] = (void*)win_data.Title;
Invalidate(1, thread_data);
}
void CloseWindow(TThreadData thread_data)
{
(unsigned int&)thread_data[MENUET_THREAD_DATA_FLAG] |= 0x80000000;
}
void Invalidate(int frame, TThreadData thread_data)
{
if (frame < 0) return;
(unsigned int&)thread_data[MENUET_THREAD_DATA_FLAG] |= (frame ? 3 : 1);
}
void* GetPicture(unsigned short &width, unsigned short &height, TThreadData thread_data)
{
width = (unsigned short)((unsigned int)thread_data[MENUET_THREAD_DATA_SZ_PICT] >> 16);
height = (unsigned short)((unsigned int)thread_data[MENUET_THREAD_DATA_SZ_PICT]);
return (void*)thread_data[MENUET_THREAD_DATA_PICTURE];
}
void SetPicture(void *picture, unsigned short width, unsigned short height, TThreadData thread_data)
{
thread_data[MENUET_THREAD_DATA_PICTURE] = (void*)picture;
(unsigned int&)thread_data[MENUET_THREAD_DATA_SZ_PICT] =
(width == 0 || height == 0) ? 0 : (((unsigned int)width << 16) | height);
Invalidate(0, thread_data);
}
int _GetSkinHeader();
void GetBorderHeader(unsigned short &border_size, unsigned short &header_size, TThreadData thread_data)
{
int win_type = ((unsigned int)thread_data[MENUET_THREAD_DATA_FLAG] & 0x40000000) ?
((TStartData*)thread_data[MENUET_THREAD_DATA_TITLE])->WinData.WindowType :
((unsigned int)thread_data[MENUET_THREAD_DATA_C_WINDOW] >> 24);
border_size = MENUET_BORDER_SIZE;
header_size = short(((win_type & 15) == 3) ? _GetSkinHeader() : MENUET_HEADER_SIZE);
}
void GetClientSize(unsigned short &width, unsigned short &height,
int win_width, int win_height, TThreadData thread_data)
{
const int MAX_SIZE = 32767;
unsigned short border_size, header_size;
GetBorderHeader(border_size, header_size, thread_data);
win_width -= 2 * border_size;
win_height -= border_size + header_size;
if (win_width < 0) win_width = 0;
else if (win_width > MAX_SIZE) win_width = MAX_SIZE;
if (win_height < 0) win_height = 0;
else if (win_height > MAX_SIZE) win_height = MAX_SIZE;
width = (unsigned short)win_width;
height = (unsigned short)win_height;
}
void GetMousePosPicture(short &x, short &y)
{
unsigned short dx, dy;
GetMousePosition(x, y);
GetBorderHeader(dx, dy);
x -= dx; y -= dy;
}
}
#else // def __MENUET__
namespace Menuet
{
struct TMutex
{
unsigned int mut;
TMutex();
~TMutex();
};
#undef MENUET_MUTEX_INIT
#define MENUET_MUTEX_INIT TMutex()
struct TRecMutex
{
unsigned int mut;
TRecMutex();
~TRecMutex();
};
#undef MENUET_REC_MUTEX_INIT
#define MENUET_REC_MUTEX_INIT TRecMutex()
}
#endif // else: def __MENUET__
#endif // ndef __MENUET_H_INCLUDED_

View File

@ -0,0 +1,921 @@
#include <windows.h>
#include <string.h>
#include <process.h>
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <deque.h>
#include <menuet.h>
#include <me_heap.h>
#include <me_file.h>
using namespace Menuet;
using namespace std;
const char file_prefix[] = "";
bool WasThreadCreatedBool = false;
struct TExceptToMessageLoop
{
TExceptToMessageLoop() {}
};
struct TThreadDataStruct
{
void *user;
void *stack_begin;
TWindowData *win_data;
HWND hwnd;
int flag;
unsigned int win_time, me_time;
void *picture;
unsigned int picture_width, picture_height;
deque<unsigned char> *keys;
unsigned int bmp_data_length;
unsigned int *bmp_data;
unsigned int mouse_state;
};
TThreadDataStruct /*__thread*/ ThreadDataStruct;
int nCmdShow;
HINSTANCE hInstance;
const char szWindowClass[] = "Menuet window";
void FinalizeThreadData()
{
if (ThreadDataStruct.keys)
{
delete ThreadDataStruct.keys;
ThreadDataStruct.keys = 0;
}
if (ThreadDataStruct.bmp_data)
{
delete[] ThreadDataStruct.bmp_data;
ThreadDataStruct.bmp_data = 0;
}
}
unsigned int CalculateNewTime()
{
unsigned int t = GetTickCount();
unsigned int dt = (unsigned int)(t - ThreadDataStruct.win_time) / 10U;
ThreadDataStruct.me_time += dt;
ThreadDataStruct.win_time += dt * 10;
return t;
}
void DrawPicture(HDC hdc)
{
TRecMutex xm;
InitRecMutex(&xm);
Lock(&xm);
UnLock(&xm);
int w = ThreadDataStruct.picture_width, h = ThreadDataStruct.picture_height;
RECT rect;
if (!ThreadDataStruct.picture || !ThreadDataStruct.hwnd || w <= 0 || h <= 0) return;
if (GetClientRect(ThreadDataStruct.hwnd, &rect))
{
rect.right -= rect.left; rect.left = 0;
rect.bottom -= rect.top; rect.top = 0;
if (rect.right <= 0 || rect.bottom <= 0) return;
if (w > rect.right) w = rect.right;
if (h > rect.bottom) h = rect.bottom;
}
if (!ThreadDataStruct.bmp_data || ThreadDataStruct.bmp_data_length < w * h)
{
if (ThreadDataStruct.bmp_data) delete[] ThreadDataStruct.bmp_data;
ThreadDataStruct.bmp_data_length = w * h;
ThreadDataStruct.bmp_data = new unsigned int[ThreadDataStruct.bmp_data_length];
}
int i;
unsigned char *p = (unsigned char*)ThreadDataStruct.picture;
for (i = 0; i < w * h; i++)
{
ThreadDataStruct.bmp_data[i] = ((unsigned int)p[0]) +
((unsigned int)p[1] << 8) + ((unsigned int)p[2] << 16);
p += 3;
}
HBITMAP bitmap = CreateBitmap(w, h, 1, 32, ThreadDataStruct.bmp_data);
if (bitmap)
{
HDC memdc = CreateCompatibleDC(hdc);
if (memdc)
{
SelectObject(memdc, bitmap);
BitBlt(hdc, 0, 0, w, h, memdc, 0, 0, SRCCOPY);
DeleteObject(memdc);
}
DeleteObject(bitmap);
}
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
const int timeout = 20;
unsigned int t;
PAINTSTRUCT ps;
HDC hdc;
if (hWnd == ThreadDataStruct.hwnd && ThreadDataStruct.flag != -1)
{
int window_rect[4];
switch (message)
{
case WM_CREATE:
SetTimer(hWnd, 0, timeout, NULL);
SendMessage(hWnd, WM_SIZE, SIZE_RESTORED, 0);
return 0;
case WM_TIMER:
t = CalculateNewTime();
while (MenuetOnIdle((TThreadData)(&ThreadDataStruct)) == 0 &&
GetTickCount() - t + 2 < timeout);
return 0;
case WM_MOUSEMOVE:
MenuetOnMouse((TThreadData)(&ThreadDataStruct));
return 0;
case WM_LBUTTONDOWN:
if (!ThreadDataStruct.mouse_state) SetCapture(hWnd);
ThreadDataStruct.mouse_state |= 1;
MenuetOnMouse((TThreadData)(&ThreadDataStruct));
return 0;
case WM_LBUTTONUP:
if (ThreadDataStruct.mouse_state & 1)
{
ThreadDataStruct.mouse_state &= ~1;
if (!ThreadDataStruct.mouse_state) ReleaseCapture();
MenuetOnMouse((TThreadData)(&ThreadDataStruct));
}
return 0;
case WM_RBUTTONDOWN:
if (!ThreadDataStruct.mouse_state) SetCapture(hWnd);
ThreadDataStruct.mouse_state |= 2;
MenuetOnMouse((TThreadData)(&ThreadDataStruct));
return 0;
case WM_RBUTTONUP:
if (ThreadDataStruct.mouse_state & 2)
{
ThreadDataStruct.mouse_state &= ~2;
if (!ThreadDataStruct.mouse_state) ReleaseCapture();
MenuetOnMouse((TThreadData)(&ThreadDataStruct));
}
return 0;
case WM_CAPTURECHANGED:
if (ThreadDataStruct.mouse_state)
{
ThreadDataStruct.mouse_state = 0;
MenuetOnMouse((TThreadData)(&ThreadDataStruct));
}
return 0;
//case WM_SYSKEYDOWN: case WM_KEYDOWN:
case WM_CHAR:
ThreadDataStruct.keys->push_back((unsigned char)wParam);
MenuetOnKeyPress((TThreadData)(&ThreadDataStruct));
return 0;
case WM_SIZE:
GetProcessInfo(0, 0, 0, 0, window_rect);
MenuetOnSize(window_rect, (TThreadData)(&ThreadDataStruct));
InvalidateRect(hWnd, 0, 0);
return 0;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
if (ThreadDataStruct.picture) DrawPicture(hdc);
EndPaint(hWnd, &ps);
return 0;
case WM_CLOSE:
if (MenuetOnClose((TThreadData)(&ThreadDataStruct)))
{
ThreadDataStruct.flag = -1;
}
else return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
ATOM MyRegisterClass()
{
HBRUSH background = CreateSolidBrush(RGB(0, 0, 0));
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = 0;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = background;
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = 0;
ATOM ret = RegisterClassEx(&wcex);
DeleteObject(background);
return ret;
}
HWND InitInstance(int x, int y, int w, int h)
{
HWND hWnd;
MyRegisterClass();
DWORD style = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, exstyle = 0;
hWnd = CreateWindowEx(exstyle, szWindowClass, ThreadDataStruct.win_data->Title, style,
x, y, w, h, NULL, NULL, hInstance, NULL);
if (!hWnd) return NULL;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return hWnd;
}
int ThreadMainProc(void *user)
{
ThreadMain(user, 0);
return 0;
}
namespace Menuet
{
void Main() {ThreadMain();}
void* ThreadMain(void *user, void *stack_begin)
{
TStartData start_data;
ThreadDataStruct.user = user;
ThreadDataStruct.stack_begin = stack_begin;
ThreadDataStruct.win_data = &start_data.WinData;
ThreadDataStruct.hwnd = 0;
ThreadDataStruct.flag = 0;
ThreadDataStruct.win_time = GetTickCount();
ThreadDataStruct.me_time = ThreadDataStruct.win_time / 10;
ThreadDataStruct.keys = new deque<unsigned char>;
ThreadDataStruct.bmp_data_length = 0;
ThreadDataStruct.bmp_data = 0;
ThreadDataStruct.mouse_state = 0;
start_data.Left = 50; start_data.Width = 256;
start_data.Top = 50; start_data.Height = 256;
start_data.WinData.WindowType = 0x03;
start_data.WinData.HeaderType = 0x80;
start_data.WinData.WindowColor = 0xFFFFFF;
start_data.WinData.HeaderColor = 0x6060FF;
start_data.WinData.BorderColor = 0x000000;
start_data.WinData.TitleColor = 0xFFFF40;
start_data.WinData.Title = 0;
if (MenuetOnStart(start_data, (TThreadData)(&ThreadDataStruct)))
{
while (ThreadDataStruct.flag < 0)
{
ThreadDataStruct.flag &= ~0x80000000;
if (MenuetOnClose((TThreadData)(&ThreadDataStruct)))
{
ThreadDataStruct.flag = -1;
break;
}
}
if (ThreadDataStruct.flag >= 0)
{
assert((ThreadDataStruct.hwnd = InitInstance(start_data.Left,
start_data.Top, start_data.Width, start_data.Height)) != NULL);
assert(SendMessage(ThreadDataStruct.hwnd, WM_CREATE, 0, 0) == 0);
MSG msg;
HACCEL hAccelTable = 0;
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
assert(ThreadDataStruct.flag == -1);
}
FinalizeThreadData();
return ThreadDataStruct.stack_begin;
}
void GetWindowData(TWindowData &win_data)
{
win_data = *ThreadDataStruct.win_data;
}
void GetWindowData(TWindowData &win_data, TThreadData thread_data)
{
win_data = *((TThreadDataStruct*)thread_data)->win_data;
}
void SetWindowData(const TWindowData &win_data)
{
*ThreadDataStruct.win_data = win_data;
if (ThreadDataStruct.hwnd)
{
SetWindowText(ThreadDataStruct.hwnd, ThreadDataStruct.win_data->Title);
InvalidateRect(ThreadDataStruct.hwnd, NULL, FALSE);
}
}
void SetWindowData(const TWindowData &win_data, TThreadData thread_data)
{
*((TThreadDataStruct*)thread_data)->win_data = win_data;
if (((TThreadDataStruct*)thread_data)->hwnd)
{
SetWindowText(((TThreadDataStruct*)thread_data)->hwnd,
((TThreadDataStruct*)thread_data)->win_data->Title);
InvalidateRect(((TThreadDataStruct*)thread_data)->hwnd, NULL, FALSE);
}
}
void CloseWindow()
{
if (ThreadDataStruct.hwnd)
{
SendMessage(ThreadDataStruct.hwnd, WM_CLOSE, 0, 0);
}
else ThreadDataStruct.flag |= 0x80000000;
}
void CloseWindow(TThreadData thread_data)
{
if (((TThreadDataStruct*)thread_data)->hwnd)
{
SendMessage(((TThreadDataStruct*)thread_data)->hwnd, WM_CLOSE, 0, 0);
}
else ((TThreadDataStruct*)thread_data)->flag |= 0x80000000;
}
void Redraw(int /*frame*/)
{
if (ThreadDataStruct.hwnd)
{
InvalidateRect(ThreadDataStruct.hwnd, NULL, FALSE);
SendMessage(ThreadDataStruct.hwnd, WM_PAINT, 0, 0);
}
}
void Redraw(int /*frame*/, TThreadData thread_data)
{
if (((TThreadDataStruct*)thread_data)->hwnd)
{
InvalidateRect(((TThreadDataStruct*)thread_data)->hwnd, NULL, FALSE);
SendMessage(((TThreadDataStruct*)thread_data)->hwnd, WM_PAINT, 0, 0);
}
}
void Invalidate(int /*frame*/)
{
if (ThreadDataStruct.hwnd)
{
InvalidateRect(ThreadDataStruct.hwnd, NULL, FALSE);
}
}
void Invalidate(int /*frame*/, TThreadData thread_data)
{
if (((TThreadDataStruct*)thread_data)->hwnd)
{
InvalidateRect(((TThreadDataStruct*)thread_data)->hwnd, NULL, FALSE);
}
}
void MoveWindow(const int window_rect[/* 4 */])
{
if (!ThreadDataStruct.hwnd) return;
RECT rect;
if (window_rect[0] == -1 || window_rect[1] == -1 ||
window_rect[2] == -1 || window_rect[3] == -1)
{
if (!GetWindowRect(ThreadDataStruct.hwnd, &rect)) return;
::MoveWindow(ThreadDataStruct.hwnd,
(window_rect[0] == -1) ? rect.left : window_rect[0],
(window_rect[1] == -1) ? rect.top : window_rect[1],
(window_rect[2] == -1) ? (rect.right - rect.left) : window_rect[2],
(window_rect[3] == -1) ? (rect.bottom - rect.top) : window_rect[3], TRUE);
}
else
{
::MoveWindow(ThreadDataStruct.hwnd, window_rect[0],
window_rect[1], window_rect[2], window_rect[3], TRUE);
}
}
void Abort()
{
if (ThreadDataStruct.hwnd) KillTimer(ThreadDataStruct.hwnd, 0);
abort();
}
void ExitProcess() {::ExitProcess(0);}
void ExitThread() {FinalizeThreadData(); ::ExitThread(0);}
void ExitThread(TThreadData) {FinalizeThreadData(); ::ExitThread(0);}
void ReturnMessageLoop()
{
TExceptToMessageLoop ex;
throw(ex);
}
void ReturnMessageLoop(TThreadData)
{
TExceptToMessageLoop ex;
throw(ex);
}
void Delay(unsigned int time) {Sleep(time * 10);}
unsigned int Clock() {CalculateNewTime(); return ThreadDataStruct.me_time;}
int GetPackedTime()
{
SYSTEMTIME time;
GetSystemTime(&time);
int t;
t = (time.wSecond / 10) * 16 + (time.wSecond % 10);
t = (time.wMinute / 10) * 16 + (time.wMinute % 10) + (t << 8);
t = (time.wHour / 10) * 16 + (time.wHour % 10) + (t << 8);
return t;
}
void GetTime(int t[/* 3 */])
{
SYSTEMTIME time;
GetSystemTime(&time);
t[0] = time.wSecond;
t[1] = time.wMinute;
t[2] = time.wHour;
}
int GetPackedDate()
{
SYSTEMTIME time;
GetSystemTime(&time);
int t;
t = ((time.wYear / 10) % 10) * 16 + (time.wYear % 10);
t = (time.wDay / 10) * 16 + (time.wDay % 10) + (t << 8);
t = (time.wMonth / 10) * 16 + (time.wMonth % 10) + (t << 8);
return t;
}
void GetDate(int d[/* 3 */])
{
SYSTEMTIME time;
GetSystemTime(&time);
d[0] = time.wDay;
d[1] = time.wMonth;
d[2] = time.wYear;
}
void GetTimeDate(int t[/* 6 */])
{
SYSTEMTIME time;
GetSystemTime(&time);
t[0] = time.wSecond;
t[1] = time.wMinute;
t[2] = time.wHour;
t[3] = time.wDay;
t[4] = time.wMonth;
t[5] = time.wYear;
}
void ReadCommonColors(unsigned int colors[/* 10 */])
{
int i;
for (i = 0; i < 10; i++) colors[i] = 0;
}
unsigned int GetProcessInfo(unsigned int *use_cpu, char process_name[/* 13 */], unsigned int *use_memory,
unsigned int *pid, int window_rect[/* 4 */], unsigned int pid_for)
{
if (use_cpu) *use_cpu = 0;
if (process_name) strcpy(process_name, "noname");
if (use_memory) *use_memory = 0;
if (pid)
{
if ((pid_for | 15) == -1) pid_for = getpid();
*pid = pid_for;
}
if (window_rect)
{
RECT rect;
if (ThreadDataStruct.hwnd && GetWindowRect(ThreadDataStruct.hwnd, &rect))
{
window_rect[0] = rect.left;
window_rect[1] = rect.top;
window_rect[2] = rect.right - rect.left;
window_rect[3] = rect.bottom - rect.top;
}
else
{
window_rect[0] = 0; window_rect[1] = 0;
window_rect[2] = 0; window_rect[3] = 0;
}
}
return 1;
}
unsigned int GetPid() {return GetCurrentThreadId();}
unsigned int GetPid(TThreadData /*thread_data*/) {return GetCurrentThreadId();}
TThreadData GetThreadData() {return (TThreadData)(&ThreadDataStruct);}
TThreadData GetThreadData(unsigned int /*pid*/) {return (TThreadData)(&ThreadDataStruct);}
void* GetPicture(unsigned short &width, unsigned short &height)
{
width = (unsigned short)ThreadDataStruct.picture_width;
height = (unsigned short)ThreadDataStruct.picture_height;
return ThreadDataStruct.picture;
}
void* GetPicture(unsigned short &width, unsigned short &height, TThreadData thread_data)
{
width = (unsigned short)((TThreadDataStruct*)thread_data)->picture_width;
height = (unsigned short)((TThreadDataStruct*)thread_data)->picture_height;
return ((TThreadDataStruct*)thread_data)->picture;
}
void SetPicture(void *picture, unsigned short width, unsigned short height)
{
ThreadDataStruct.picture_width = width;
ThreadDataStruct.picture_height = height;
ThreadDataStruct.picture = picture;
if (ThreadDataStruct.hwnd)
{
InvalidateRect(ThreadDataStruct.hwnd, NULL, FALSE);
}
}
void SetPicture(void *picture, unsigned short width, unsigned short height, TThreadData thread_data)
{
((TThreadDataStruct*)thread_data)->picture_width = width;
((TThreadDataStruct*)thread_data)->picture_height = height;
((TThreadDataStruct*)thread_data)->picture = picture;
if (((TThreadDataStruct*)thread_data)->hwnd)
{
InvalidateRect(((TThreadDataStruct*)thread_data)->hwnd, NULL, FALSE);
}
}
void GetBorderHeader(unsigned short &border_size, unsigned short &header_size)
{
border_size = (unsigned short)GetSystemMetrics(SM_CXFRAME);
header_size = (unsigned short)(GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION));
}
void GetBorderHeader(unsigned short &border_size, unsigned short &header_size, TThreadData /*thread_data*/)
{
border_size = (unsigned short)GetSystemMetrics(SM_CXFRAME);
header_size = (unsigned short)(GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION));
}
void GetClientSize(unsigned short &width, unsigned short &height)
{
if (!ThreadDataStruct.hwnd) {width = 0; height = 0; return;}
RECT rect;
GetClientRect(ThreadDataStruct.hwnd, &rect);
width = (unsigned short)(rect.right - rect.left);
height = (unsigned short)(rect.bottom - rect.top);
}
void GetClientSize(unsigned short &width, unsigned short &height, TThreadData thread_data)
{
if (!((TThreadDataStruct*)thread_data)->hwnd) {width = 0; height = 0; return;}
RECT rect;
GetClientRect(((TThreadDataStruct*)thread_data)->hwnd, &rect);
width = (unsigned short)(rect.right - rect.left);
height = (unsigned short)(rect.bottom - rect.top);
}
void GetClientSize(unsigned short &width, unsigned short &height, int win_width, int win_height)
{
win_width -= 2*GetSystemMetrics(SM_CXFRAME);
win_height -= 2*GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION);
if (win_width < 0) win_width = 0;
if (win_height < 0) win_height = 0;
width = (unsigned short)win_width; height = (unsigned short)win_height;
}
void GetClientSize(unsigned short &width, unsigned short &height,
int win_width, int win_height, TThreadData /*thread_data*/)
{
win_width -= 2*GetSystemMetrics(SM_CXFRAME);
win_height -= 2*GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYCAPTION);
if (win_width < 0) win_width = 0;
if (win_height < 0) win_height = 0;
width = (unsigned short)win_width; height = (unsigned short)win_height;
}
void GetScreenSize(unsigned short &width, unsigned short &height)
{
width = (unsigned short)GetSystemMetrics(SM_CXFULLSCREEN);
height = (unsigned short)GetSystemMetrics(SM_CYFULLSCREEN);
}
TMutex::TMutex() {mut = (unsigned int)CreateMutex(NULL, FALSE, NULL);}
TMutex::~TMutex() {if (mut) {CloseHandle((HANDLE)mut); mut = 0;}}
TRecMutex::TRecMutex() {mut = (unsigned int)CreateMutex(NULL, FALSE, NULL);}
TRecMutex::~TRecMutex() {if (mut) {CloseHandle((HANDLE)mut); mut = 0;}}
void InitMutex(TMutex *mutex) {if (!mutex->mut) *mutex = TMutex();}
void InitRecMutex(TRecMutex *mutex) {if (!mutex->mut) *mutex = TRecMutex();}
bool TryLock(TMutex *mutex)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, 0);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
bool TryLock(TRecMutex *mutex, unsigned int /*pid*/)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, 0);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
bool TryLock(TRecMutex *mutex)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, 0);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
bool TryLock(TRecMutex *mutex, TThreadData /*thread_data*/)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, 0);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
void Lock(TMutex *mutex)
{
WaitForSingleObject((HANDLE)mutex->mut, INFINITE);
}
void Lock(TRecMutex *mutex, unsigned int /*pid*/)
{
WaitForSingleObject((HANDLE)mutex->mut, INFINITE);
}
void Lock(TRecMutex *mutex)
{
WaitForSingleObject((HANDLE)mutex->mut, INFINITE);
}
void Lock(TRecMutex *mutex, TThreadData /*thread_data*/)
{
WaitForSingleObject((HANDLE)mutex->mut, INFINITE);
}
bool LockTime(TMutex *mutex, unsigned int time)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, time * 10);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
bool LockTime(TRecMutex *mutex, unsigned int time, unsigned int /*pid*/)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, time * 10);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
bool LockTime(TRecMutex *mutex, unsigned int time)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, time * 10);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
bool LockTime(TRecMutex *mutex, unsigned int time, TThreadData /*thread_data*/)
{
DWORD ret = WaitForSingleObject((HANDLE)mutex->mut, time * 10);
return ret == WAIT_OBJECT_0 || ret == WAIT_ABANDONED;
}
void UnLock(TMutex *mutex)
{
ReleaseMutex((HANDLE)mutex->mut);
}
void UnLock(TRecMutex *mutex, unsigned int /*pid*/)
{
ReleaseMutex((HANDLE)mutex->mut);
}
void UnLock(TRecMutex *mutex)
{
ReleaseMutex((HANDLE)mutex->mut);
}
void UnLock(TRecMutex *mutex, TThreadData /*thread_data*/)
{
ReleaseMutex((HANDLE)mutex->mut);
}
void DebugPutChar(char c)
{
DWORD num_written;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), &c, 1, &num_written, NULL);
}
void DebugPutString(const char *s)
{
DWORD num_written;
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), s, strlen(s), &num_written, NULL);
}
int GetKey()
{
if (ThreadDataStruct.keys->empty()) return -1;
else
{
unsigned char c = ThreadDataStruct.keys->front();
ThreadDataStruct.keys->pop_front();
return c;
}
}
int GetMouseButton()
{
return ThreadDataStruct.mouse_state;
}
void GetMousePosition(short &x, short &y, bool absolute)
{
POINT point;
if (!GetCursorPos(&point)) {x = -1; y = -1;}
else if (absolute) {x = (short)point.x; y = (short)point.y;}
else
{
RECT rect;
if (!ThreadDataStruct.hwnd || !GetWindowRect(ThreadDataStruct.hwnd, &rect))
{
x = -1; y = -1;
}
else
{
x = (short)(point.x - rect.left);
y = (short)(point.y - rect.top);
}
}
}
void GetMousePosPicture(short &x, short &y)
{
POINT point;
if (!GetCursorPos(&point)) {x = -1; y = -1;}
else if (!ThreadDataStruct.hwnd || !ScreenToClient(ThreadDataStruct.hwnd, &point))
{
x = -1; y = -1;
}
else
{
x = (short)point.x;
y = (short)point.y;
}
}
bool WasThreadCreated() {return WasThreadCreatedBool;}
unsigned int CreateThread(void *user, unsigned int stack_size, void* /*stack_end*/)
{
unsigned long pid = -1;
WasThreadCreatedBool = true;
if (!::CreateThread(NULL, stack_size, (LPTHREAD_START_ROUTINE)ThreadMainProc, user, 0, &pid))
{
return -1;
}
return pid;
}
unsigned int StrLen(const char *str) {return ::strlen(str);}
char *StrCopy(char *dest, const char *src) {return ::strcpy(dest, src);}
void *MemCopy(void *dest, const void *src, unsigned int n) {return ::memcpy(dest, src, n);}
void *MemSet(void *s, char c, unsigned int n) {return ::memset(s, c, n);}
double Floor(double x) {return floor(x);}
void *Alloc(unsigned int size) {return malloc(size);}
void *ReAlloc(void *mem, unsigned int size) {return realloc(mem, size);}
void Free(void *mem) {free(mem);}
TFileData FileOpen(const char *name, unsigned int /*buffer_length*/)
{
if (!name || !name[0]) return 0;
TFileData file_data = (TFileData)Alloc(sizeof(unsigned int) +
strlen(file_prefix) + strlen(name) + 1);
if (!file_data) return 0;
file_data->data = 0;
strcpy((char*)file_data + sizeof(unsigned int), file_prefix);
strcat((char*)file_data + sizeof(unsigned int), name);
return file_data;
}
int FileClose(TFileData file_data)
{
if (!file_data) return -1;
if (file_data->data) CloseHandle((HANDLE)file_data->data);
Free(file_data);
return 0;
}
bool FileEof(TFileData file_data)
{
unsigned int pos;
if (FileTestRead(file_data) < 0) return false;
pos = SetFilePointer((HANDLE)file_data->data, 0, NULL, FILE_CURRENT);
if (pos == -1) return false;
return pos >= GetFileSize((HANDLE)file_data->data, NULL);
}
unsigned int FileGetPosition(TFileData file_data)
{
unsigned int pos;
if (FileTestRead(file_data) < 0) return 0;
pos = SetFilePointer((HANDLE)file_data->data, 0, NULL, FILE_CURRENT);
return (pos == -1) ? 0 : pos;
}
void FileSetPosition(TFileData file_data, unsigned int pos)
{
if (FileTestRead(file_data) < 0) return;
SetFilePointer((HANDLE)file_data->data, pos, NULL, FILE_BEGIN);
}
void FileReset(TFileData file_data)
{
if (!file_data || !file_data->data) return;
FlushFileBuffers((HANDLE)file_data->data);
}
unsigned int FileGetLength(TFileData file_data)
{
if (FileTestRead(file_data) < 0) return -1;
return GetFileSize((HANDLE)file_data->data, NULL);
}
int FileTestRead(TFileData file_data)
{
if (!file_data) return -1;
if (!file_data->data)
{
file_data->data = (unsigned int)CreateFile((char*)file_data + sizeof(unsigned int),
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0);
if (!file_data->data) return -512;
}
return 0;
}
int FileRead(TFileData file_data, void *mem, int size)
{
if (!file_data || !mem || size <= 0) return -1;
int res = FileTestRead(file_data);
if (res < 0) return res;
if (!ReadFile((HANDLE)file_data->data, mem, size, (unsigned long*)&res, NULL))
{
return -512;
}
return (res >= 0) ? res : (-1);
}
}
bool CheckAllocConsole(LPSTR lpCmdLine)
{
char Console[] = "-console";
int ConsoleL = ::strlen(Console);
char *s;
for (s = lpCmdLine; *s; s++)
{
if ((s == lpCmdLine || isspace(s[-1])) && memcmp(s, Console, ConsoleL) == 0 &&
(!s[ConsoleL] || isspace(s[ConsoleL])))
{
AllocConsole();
SetConsoleTitle("Debug Console");
return true;
}
}
return false;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE /*hPrevInstance*/,
LPSTR lpCmdLine,
int nCmdShow)
{
::nCmdShow = nCmdShow;
::hInstance = hInstance;
CheckAllocConsole(lpCmdLine);
Main();
//::ExitThread(0);
return 0;
}

View File

@ -0,0 +1,49 @@
macro writestr [arg]
{
common
local straddr
local strend
pushad
push straddr
push strend
jmp @Menuet@DebugPutString$qpxc
straddr db arg,0
strend:
pop eax
popad
}
macro writeint arg
{
push dword arg
xchg eax,[esp]
pushad
push eax
call @DebugPutNumber$qi
pop eax
popad
pop eax
}
macro write [arg]
{
forward
if arg eq
else if arg eq endline
writestr 10
else if arg eqtype ''
writestr arg
else
writeint arg
end if
}
macro writeln [arg]
{
common
write arg,endline
}

View File

@ -0,0 +1,9 @@
#Life 1.05
#D Acorn
#D The most vigorously growing 7-cell
#D "methuselah" pattern. See also RABBITS.
#N
#P -3 -1
.*
...*
**..***

View File

@ -0,0 +1,837 @@
#Life 1.05
#D Binary Adder
#D By David Buckingham, with size optimization by Mark
#D Niemec, 1975. Two glider streams enter the lower
#D right, representing the binary numbers 1110 and 0011.
#D The sum, 10001, appears from the middle right side
#D after about one thousand generations. The gliders go
#D in and come out backwards -- that is, 1's place first.
#D That way, the numbers to be added can be arbitrarily
#D large.
#N
#P -56 -95
**
..*
...*
#P -63 -92
..*.......*
**........*
*..**....*
.*****.**
..*
#P -78 -93
...........**
...........**
........**
.......***
........**
..**.......**
.*.*.......**
.*
**
#P -83 -79
**
.*
.*.*.......**
..**.......**....*
........**......****
.......***.....*..**
........**.....**
...........**....*
...........**
#P -49 -90
...**
...*.*
.....*
.....**
.
.
.
.
........**
.........*
.........*.*.....*
..........**....*.*
..............**...*
....*.........**...*
..*.*.........**...*
...**...........*.*
.................*
........***
**........*
**.......*
.
.
.
.
.
.
......**
......*
........*..........*
.......****......*.*
......*....*......**
......**..**
#P -51 -56
..............***
..............***
.....***.....*...*
............*.....*..*.*
.....*.*.....*...*....**
....*****.....***.....*
...**...**
...**...**
.
.
...**
.**.*
.*
............**
..***.*......*
......*...***
......*...*
.
.
.
.
.**...**
...***
..*...*
...*.*
....*
.
.**
..*
**
#P -63 -75
*.**
....*
.....*
.....*
.....*
....*
..**
.
.
...*
.***
*
**
.
.
.
.
.......***
.........*
*.......*
**
**
.......***
.......*
**......*
*.**
...*
#P -63 -47
***
.
.
.
.
.
.
..**
**
..*
.*
*
.
..**
..*
...***
.....*
.
.
.
...........*
...........*
#P -68 -59
..***
.
..*.*
.****
**
**
#P -66 -47
.*
.*
.*
.
.
.
.
**
..*
.*
..*
#P 64 -22
**
*.*
#P 66 -20
*
**
#P -40 4
*
***
#P -38 6
.*
**
#P -47 15
...........***
..........*...*
.........*.....*
..........*...*
...........***
...........***
.
.
.........**
..........*.....**
.......***......*.*
......*.........*
.......***
.........***
............*
...........**
.
.
.
.
.
..............*
.............***
............*****
...........**...**
.
.
.
.............***
.............***
.
*..........**
***.........*
...*.....***
..**.....*
.
.
.
.
.....*
....***
...*****
..*.*.*.*
..**...**
.
.
.....*
....*.*
#P -62 63
.....................*....**
.................*..*....*.*
.................*.........*
..................*
...............***
...............*
........*
......***
.....*
.....**........................*
..............................**
.......................**.....*.*
.......................**
.
.
...........**
..***.....*.*
.*...*......*
*.....*
*.....*
..............**
......*.......*.*.....***
.....**.......*......*...*
.....**.............*.....*
...*..**............*.....*
....*.*
....**..............*
....................**
....................**
..**...**..........**..*
..**...**...........*.*
.....................**
....***
....***
.....*............**...**
..................**...**
.
....................***
.......**...........***
.......*.............*
........***
..........*
.
..................**
...................*
................***
................*
#P 65 21
..**
..*
*.*
#P 65 24
**
#P 67 49
*
***
...*
..**
.
.
.
.
.
..**...**
..*.....*
#P 65 61
.**..*...*
**....***
..*
.
.
.
.
.
.....*
...**.**
.
..*.....*
.
..**.*.**
#P 65 81
..**
...*
***
#P 65 84
*
#P 22 99
.**
**
..*
#P 22 102
.
.
.
#P 38 111
.
.
.
#P 37 114
.**
**
..*
#P 13 -16
*
.*
#P 15 -17
*
*
*
#P 29 -17
...**
.
**
.*
.*.*
#P 31 -12
**
.
.....*
...**
#P 50 -15
**
*
#P 48 -13
*.*
**
#P 39 -13
**
*..*
....*
....*
#P 39 -9
....*
*..*
**
#P -6 -7
**
.**
*
#P -6 -3
.
.
.
#P 8 -8
*......*.*
***.....**
...*....*
..**
.
....***
....***
#P 10 -1
.*...*
*.....*
.*...*
..***
#P 36 6
**
*
.***
#P 33 9
**....*
*.*
..*
..**
#P -21 8
**
.**
#P -21 10
*
#P 2 11
........**
.........*
......***
......*
.
**
.*
.*.*......*.*
..**....*...*
........*
#P 9 21
*....*
.*
.*...*
...*.*
.
.*
..**
.**
#P 33 19
**
.*
.*.*
#P 35 22
**
#P 42 21
..**
.*.*
*
*..*..*
*
.*.*
..**
#P 49 23
**....*
..*..*.*
***.*.**
...**.**
....*.**
.....*.*
......*
#P 21 23
**
*.*
#P 23 25
*
**
#P -6 33
**
#P -7 34
*.*
..*
#P -16 39
**
#P -16 40
*.*
*
#P 34 45
....*
.****
****
#P 34 48
*..*
****
.****
....*
#P -21 48
**
#P -22 49
*.*
..*
#P 11 50
.................**
................*.*
................*
...............**
.
.
.
...........**
..........***
**.....*.**
**.....*..*........***
.......*.**
..........***..**..*
...........**..*...*
................*..*
................**
#P 6 69
........**...*
........*.*..*.*
........*....**
.
.
.
**..............**........*
.*..............*..*......*
.*.*.......**..*...*
..**......***..**..*
.......*.**
.......*..*........***....*
.......*.**...............*
..........***
...........**
..**
.**
...*
#P 39 50
......**
......*.*
........*
........**
.
.
.
......**
......*
....*.*
*...**
.*
..*
.*........*
*.........*
#P 50 54
.**
*..*
...*
...*
.*.*
.*.*
..*
.
.
*...**
.....*
.
*...*..**
.***....**
.......*
#P -1 54
**
#P -1 55
*.*
*
#P 37 59
*
*
.*
.*
#P 37 63
.*
*
*
#P 33 76
.*
*.*
*..*
*.*
.*
#P 38 73
..**
..*
*.*
**
#P 51 74
...*
.**.**
.
*.....*
#P 51 79
**.*.**
#P -16 87
*
#P -17 88
**
*.*
#P 56 86
**
*
#P 57 88
***
..*
#P -8 -129
..........*
........***
.......*
.......**
.
................*
.....*..........***
.....*.............*
....*.*...........**
...**.**
..*.....*
.....*...............*
..**...**............*
....................*.*
...................**.**
...****...........*.....*
...*..**.............*
....*.**..........**...**
.
.....**
......*.............****
...................**..*
...................**.*
**.*.**
*.....*.....*.......**
.*...*.......*......*
..***......***
.
....................**.*.**
..............*.....*.....*
.............*.......*...*
.............***......***
.
.
..**................................*
..**..............................***
.................................*
#P -10 -92
......................**...........**
.......................*
....................***
....................*
................*
................***
...................*
.*................**
*
***.......*....................*****
........***...................*.***.*
.......*.......................*...*
.......**.......................***
.................................*
....................***
...................*...*
..................*.....*
..................*.....*......*
.....................*.........*
....***............*...*......*.*.....*
...*...*............***......**.**..*.*
..*.....*............*......*.....*..**
..*.....*......................*
.....*......................**...**
...*...*..............***
....***...............***
.....*...............*...*......*
...............*.*..............*
...............**...**...**......*
..***...........*
..***
.*...*........................**
.........*.*..................**
**...**...**
..........*
#P 34 -90
*
***
...*
..**
#P 34 -86
.
.
.
.
#P -20 -82
**
*
#P -22 -80
*.*
**
#P 36 -78
.*****
*.***.*
.*...*
..***
...*
#P 34 -70
.......*
.......*
*.....*.*
*.*..**.**
**..*.....*
.......*
....**...**
#P -25 -70
.*
*
#P -25 -68
***
#P -25 -63
*.*
.**
.*
#P -22 -63
.
.
.
#P 38 -58
**
.*
#P 36 -56
***
*
#P 13 -54
**
**
#P 13 -52
.
.
#P 19 -53
*
*.*
**
#P 19 -49
.
.
.
#P -5 -51
**
*
.***
...*
#P -5 -47
.
.
.
.
#P -17 -47
..*
*.*
.**
#P -17 -43
.
.
.
#P -10 -48
*
.*
.*
#P -8 -48
*
*
#P 14 -45
*
#P 15 -45
.*
**
*
#P 23 -44
...*
.***
*
#P 23 -41
**
#P -15 -38
*.*
.**
.*
#P -15 -34
.
.
.
#P -2 -38
......*
......*.*
......**
.
.
.......*.*
..*.....**
*.*.....*
.**
.........*
#P 0 -28
.......*.*
.......**
.
.
.
*.*
.**
.*
#P 18 -36
..*
.**
.**
.**
**
#P 21 -36
**
.**
.**
***
..**
#P 23 -25
**
*
#P 24 -23
***
..*
#P 41 -25
..**
.*.*
*
#P 41 -22
*..*
*
.*.*
..**
#P 47 -24
....*
.***
*..*
.**
#P 52 -27
..*
.*.*
*.**
*.**
*.**
.*.*
..*
#P 33 -20
.**
*.*
#P 33 -18
*

View File

@ -0,0 +1,71 @@
#Life 1.05
#D AK47, a gun at 47 gens/shot.
#D The AK47 reaction (middle)
#D by Richard Schroeppel was
#D known for years before
#D stabilizers were found by
#D Paul Callahan in July 1994.
#D See also P94S.
#N
#P -23 -11
...**
..*..*
.*.*..*
.*.*...*
**.*.******
...*..*.*
...***.*..*
.**...*.*.*
*..*.**.*
.**...*.**
...**....*
...*.*...*
**.*.....**
.*.*.**
.*.*..*
..*..*
...**
#P -6 -12
**.......*
**.....***
......*
......**
.
...***
..*...*
.*.....*
.*.....*
.*.....*
..*...*
...***
.
.
.
.
.
.
.
.
.
....**
.....*
..***.....**
..*.......**
#P 12 -5
......**
.....*..*
....*.**.*
.*...*.*.*
.*...*.*.**
*......*
..*..***
..*.....**
..*.**.*..*
.**.*...**
**...***
.**....*
**..**.*.**
....**.*.*
....*..*.*
.....*..*
......**

View File

@ -0,0 +1,304 @@
#Life 1.05
#D c/5 orthogonal spaceships
#D by Tin Coe and David Bell.
#N
#P -72 -85
....................................................................*
.*.**.........**.........*..**..................................*..*.*
.*.**....*.**.*...*.....*.....*.***....**..***.........**.......*...**
*...*.*....***.*.*...*..*.....*........****.*....**...*...*...*..*..**
.***...**....*....*.....*.*.**..*..**.*..*****.*.**...*......**.**.**.*
........**...***.....**.....*....*..*.....**..*.**...**.....**......*
.**.******........**..***....*....*...***.....***.....***.***.**.**
..*......**.......**.*.....*.*.....*..**...**.**....**.**.....*.....*
...******.*.........*********.........**...***......*..........***..*
.
...******.*.........*********.........**...***......*..........***..*
..*......**.......**.*.....*.*.....*..**...**.**....**.**.....*.....*
.**.******........**..***....*....*...***.....***.....***.***.**.**
........**...***.....**.....*....*..*.....**..*.**...**.....**......*
.***...**....*....*.....*.*.**..*..**.*..*****.*.**...*......**.**.**.*
*...*.*....***.*.*...*..*.....*........****.*....**...*...*...*..*..**
.*.**....*.**.*...*.....*.....*.***....**..***.........**.......*...**
.*.**.........**.........*..**..................................*..*.*
....................................................................*
#P 0 -85
...*..........***.............*
.*.**......*...........**.***..**
*...*......*.....**.*..**.....*
*...*..*...*....*.*.*..***
....**..*..*..*.*......**
..*.*...*........****..*
..*....****..*..*..*.***.*.**
..**.......***..*.....*
.................*****...*..*
.
.................*****...*..*
..**.......***..*.....*
..*....****..*..*..*.***.*.**
..*.*...*........****..*
....**..*..*..*.*......**
*...*..*...*....*.*.*..***
*...*......*.....**.*..**.....*
.*.**......*...........**.***..**
...*..........***.............*
#P 35 -85
**..............*....*
**.............*...**.*............................*.....*
*..**.***......*.....*....*.*.......*.............**....*.*
.****.***....*.....**....*.........**......**.....**...**...**
*......*....***...*.**....*.......*...*...*****.*....********.*
.***..**....*..**.**.*....*...*.....***...*....*.....*.*
....*.***...*.*..***.**..*..*..******.*...**...*.....**.......****
...**.*.**.**.*..**....*.*...*...........*....*.................**
....**...*.**..........***....*****************
.
....**...*.**..........***....*****************
...**.*.**.**.*..**....*.*...*...........*....*.................**
....*.***...*.*..***.**..*..*..******.*...**...*.....**.......****
.***..**....*..**.**.*....*...*.....***...*....*.....*.*
*......*....***...*.**....*.......*...*...*****.*....********.*
.****.***....*.....**....*.........**......**.....**...**...**
*..**.***......*.....*....*.*.......*.............**....*.*
**.............*...**.*............................*.....*
**..............*....*
#P -72 -59
....................................................................*
.*.**.........**.........*..**..................................*..*.*
.*.**....*.**.*...*.....*.....*.***....**..***.........**.......*...**
*...*.*....***.*.*...*..*.....*........****.*....**...*...*...*..*..**
.***...**....*....*.....*.*.**..*..**.*..*****.*.**...*......**.**.**.*
........**...***.....**.....*....*..*.....**..*.**...**.....**......*
.**.******........**..***....*....*...***.....***.....***.***.**.**
..*......**.......**.*.....*.*.....*..**...**.**....**.**.....*.....*
...******.*.........*********.........**...***......*..........***..*
.
...******.*.........*********.........**...***......*..........***..*
..*......**.......**.*.....*.*.....*..**...**.**....**.**.....*.....*
.**.******........**..***....*....*...***.....***.....***.***.**.**
........**...***.....**.....*....*..*.....**..*.**...**.....**......*
.***...**....*....*.....*.*.**..*..**.*..*****.*.**...*......**.**.**.*
*...*.*....***.*.*...*..*.....*........****.*....**...*...*...*..*..**
.*.**....*.**.*...*.....*.....*.***....**..***.........**.......*...**
.*.**.........**.........*..**..................................*..*.*
....................................................................*
#P 0 -59
...*..........***.............*
.*.**......*...........**.***..**
*...*......*.....**.*..**.....*
*...*..*...*....*.*.*..***
....**..*..*..*.*......**
..*.*...*........****..*
..*....****..*..*..*.***.*.**
..**.......***..*.....*
.................*****...*..*
.
.................*****...*..*
..**.......***..*.....*
..*....****..*..*..*.***.*.**
..*.*...*........****..*
....**..*..*..*.*......**
*...*..*...*....*.*.*..***
*...*......*.....**.*..**.....*
.*.**......*...........**.***..**
...*..........***.............*
#P 34 -58
**....**...................**.**
.******..*................*...*
.......*.........................*.*
.**.*.**..........*..**.**.......*.*.***
.***.****..***..**...**.***.*....*.*
......**.*****...***..*...*.*.....*..*
.....*.*.*........**...**........*..*
.....**...**********..............***
.
.....**...**********..............***
.....*.*.*........**...**........*..*
......**.*****...***..*...*.*.....*..*
.***.****..***..**...**.***.*....*.*
.**.*.**..........*..**.**.......*.*.***
.......*.........................*.*
.******..*................*...*
**....**...................**.**
#P -72 -35
....................................................................*
.*.**.........**.........*..**..................................*..*.*
.*.**....*.**.*...*.....*.....*.***....**..***.........**.......*...**
*...*.*....***.*.*...*..*.....*........****.*....**...*...*...*..*..**
.***...**....*....*.....*.*.**..*..**.*..*****.*.**...*......**.**.**.*
........**...***.....**.....*....*..*.....**..*.**...**.....**......*
.**.******........**..***....*....*...***.....***.....***.***.**.**
..*......**.......**.*.....*.*.....*..**...**.**....**.**.....*.....*
...******.*.........*********.........**...***......*..........***..*
.
...******.*.........*********.........**...***......*..........***..*
..*......**.......**.*.....*.*.....*..**...**.**....**.**.....*.....*
.**.******........**..***....*....*...***.....***.....***.***.**.**
........**...***.....**.....*....*..*.....**..*.**...**.....**......*
.***...**....*....*.....*.*.**..*..**.*..*****.*.**...*......**.**.**.*
*...*.*....***.*.*...*..*.....*........****.*....**...*...*...*..*..**
.*.**....*.**.*...*.....*.....*.***....**..***.........**.......*...**
.*.**.........**.........*..**..................................*..*.*
....................................................................*
#P 0 -35
...*..........***.............*
.*.**......*...........**.***..**
*...*......*.....**.*..**.....*
*...*..*...*....*.*.*..***
....**..*..*..*.*......**
..*.*...*........****..*
..*....****..*..*..*.***.*.**
..**.......***..*.....*
.................*****...*..*
.
.................*****...*..*
..**.......***..*.....*
..*....****..*..*..*.***.*.**
..*.*...*........****..*
....**..*..*..*.*......**
*...*..*...*....*.*.*..***
*...*......*.....**.*..**.....*
.*.**......*...........**.***..**
...*..........***.............*
#P 34 -34
**....**....................**..*.*...............*......*.*.....*
.******..*....................*...*..**......***.........*.*....**..**
.......*..............**..****.*..*..*...**..******...*...*......*....*
.**.*.**.........*****....*..*****....***...*....*....**...........*..*
.***.****..***...********.**.**..........*..*......**.*.*.*.*..*..*...*
......**.*****...***.*.....*.**.......***.*.*.....*.**.*****...**..*..*
.....*.*.*.......****......*.*........**..........*............**.....*
.....**...*******..........*............********...**********....*****
.
.....**...*******..........*............********...**********....*****
.....*.*.*.......****......*.*........**..........*............**.....*
......**.*****...***.*.....*.**.......***.*.*.....*.**.*****...**..*..*
.***.****..***...********.**.**..........*..*......**.*.*.*.*..*..*...*
.**.*.**.........*****....*..*****....***...*....*....**...........*..*
.......*..............**..****.*..*..*...**..******...*...*......*....*
.******..*....................*...*..**......***.........*.*....**..**
**....**....................**..*.*...............*......*.*.....*
#P -70 13
..**
..*..**
..*..**
.*
.****.*
....*.**
.***
..*
.**
*
.*
.*
...***
.
...***
.*
.*
*
.**
..*
.***
....*.**
.****.*
.*
..*..**
..*..**
..**
#P -70 -2
.*****
....*.*
*......*
*...*
.**.*
....*.**
..**
...*
.**
*.*
*.**
.*.*
...*
#P -47 10
.*
.*
*
.***.................***...***
.**.*.........*...*.*......***
..*...........**.*.......*....****
......*......*...*.*...**.*.....**
...*..*.***...**.........*........**.*
...**.*.....*.....*.................*
.........*.*******
.
.........*.*******
...**.*.....*.....*.................*
...*..*.***...**.........*........**.*
......*......*...*.*...**.*.....**
..*...........**.*.......*....****
.**.*.........*...*.*......***
.***.................***...***
*
.*
.*
#P 2 11
.............*.*
.*.**.*.........*
.*.**.*....**...*
*...*....****...*
.***...**.*.....*
........**...*.*
.**.*****
..*.....*
...*****
.
...*****
..*.....*
.**.*****
........**...*.*
.***...**.*.....*
*...*....****...*
.*.**.*....**...*
.*.**.*.........*
.............*.*
#P 20 -5
***
***....................*....*
.*...................*..*...*
...*..............*...*.....***.**
...**........**..*.*.**..*...*....*
....*........*.***..*...*.*..*...****
....*..*..*.***..*.......*....*...**.*
....*.****.**.......................*
.....****...********
.
.....****...********
....*.****.**.......................*
....*..*..*.***..*.......*....*...**.*
....*........*.***..*...*.*..*...****
...**........**..*.*.**..*...*....*
...*..............*...*.....***.**
.*...................*..*...*
***....................*....*
***
#P 20 27
***
***....................*....*
.*...................*..*...*
...*..............*...*.....***.**
...**........**..*.*.**..*...*....*
....*........*.***..*...*.*..*...****
....*..*..*.***..*.......*....*...**.*
....*.****.**.......................*
.....****...********
.
.....****...********
....*.****.**.......................*
....*..*..*.***..*.......*....*...**.*
....*........*.***..*...*.*..*...****
...**........**..*.*.**..*...*....*
...*..............*...*.....***.**
.*...................*..*...*
***....................*....*
***

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,609 @@
#Life 1.05
#D c/4 diagonal spaceships
#D By Hartmut Holzwart and David Bell.
#D
#D Diagonal c/4 are used in TIRETRAX,
#D WING
#N
#P -89 -86
**
*.*
*
#P -144 -4
........*
......**.*
....**...*
...*...**
..*....**.*
.*..**.***.*
.*
...*.*...**
**...*.*
*...*...**
.*..**..*..*
....**...*........*
..........*.*...*.*.*
............**.***..*
............**....**
.............*.**
.
...........*.*
...........*
...........***
............*.*
#P -112 -20
..........*
......*.*.*
....**.*...*
....*..***.*
......*.*
.****.*..*..**
.*....**....**.*
**.............*
....*..*....*.***
***...*....*.*
**.*......**.*..*.*
...**....*.*
.**...**.**.*.*...**
....*......**.*.....*
.........*....*......*
.....**.*...*.......*
.......**..........*.**..*
........***......*.*.****
........**......**.**.*...*
...........*....*.*...*....***
...........*.*..*.**..***...*.*
...............**.**..*....*.**
.............*....*.....*..***
...................****.*...**
................*
................**
................**
#P -64 -43
....**
...***
..****.*
**......**
**.....**
*.*..*.**
*****..*
**...*..**
***.*...*....**
.*...**.****.****
.......*.***
.....**....*....*.*
.........*
..................***
.......*.*.........****
.......**..............*
.......*.*.......*....**
........**.....**.*...*
........***....*..*.**
...........*..**.....*
..........***..*..***
............**.**..**......*
....................**.....***
.............*.*.....*..***..*
.............*.......*..*..**
..............*..*....*.**
...............*.....**
.....................**
....................*
.....................*.*
....................*..*
......................*
#P -64 -5
....**
...***
..****.*
**......**
**.....**
*.*..*.**
*****..*
**...*.*
***.**...**
.*....*..**.**
......**.*....*
.......*..**..*....***
......**...*..*.*..*
.......**...**.*......*
.......*.....**.*..*
........*....***...*.*.*
.........***...****.*.*
..........***...*...*
.................******
..............*.*.**..**
..............**......**.*
.........***..**........***
.........*..**.*...........**
..........*.*..............**
.............******.........*
..............**.*..*........*
..................*......***
..................*..*...***
.......................*
...................****...*
.....................*
......................**
#P -64 33
....**
...***
..****.*
**......**
**.....**
*.*..*.**
*****..*
**...*.*
***.**...**
.*....*..**.**
......**.*....*
.......*..**..*
......**...*..*.*
.......**...**.*.....***
.......*.....**.*....*
........*....***........*
.........***...**.....*..**
..........***...**.....*.**
......................*..*
...............**.*.***..**
.................**..**
.................*...**...*.*
..................***.......**
...........***...*..*.*....**
...........*..**...*****...*..*
............*..*..***.**....**
..............***
..................**
.
..................*.**.*
......................*.*
....................**
#P -16 -59
....**.*
....*...*
....*....*
......**
**......*.*
*.*........*
*........*
.**.......*..**
.*..*...****.**.**
.*......*...**..**
...*.*
....***....*****
...........*....*
......**.....*..*
......**.*.*
......**.*.**
.......*....*
.......*
........*.*
#P -16 -29
....**.*
....*...*
....*....*
......**
**......*.*
*.*........*
*........*
.**.......*..*****
.*..*...****.**.***
.*......*....**...*
...*.*......**..*.*
....***..*......***
..........*
......**..*......****
......**.***.***..*..*
......**.***......*.*
.....***....**
.........****
.......*.....*
........*..*.*
...........*.*
.............*
#P -16 5
......**.*
......*...*
......*....*
........**
..........*.*
.............*
**.........*
*.*.........*.**
*............****
.**.......*......*
.*..*....**......**
.*.......*.*..*...*
...*.*.......**....**
....**.*....*
........*.*...*
.......***.*..***
.......*.**.***..**.*
........*......*....*...***
...........*...*.*...**.***
.........*..*..*...**...*
..........**....*...*
................*......*
..................****..*
..................*...**
......................*.*
................**
................*
.................*
#P -19 44
.............***
.............*..***
..............*.*
..........**.......*
..........*.*....*..*
..........*........**
...........**
...........*..*.....*.**
...........*.........**.*
....**.*.....*.*......**..*....**
....*...*.....**.*....**...*...*.*
....*....*........*.......*....*
......**.........****...*.*...**
***.....*.*......*.**...****
*..........*......*...**.*
...*.....*.............**
*..*......*.**.....*.***
.*..*......****.....*..*
..*...*........*
....*..*.......**
.....*..*....**...*....*
.......**....**.*.*...*.*
.......**..**..**.*..*
........*..**........*..*
.........**..*........*...**
..........*.**............**
.
...........***
#P 23 -71
......*
.....**
.....*.*
.........*
.......*..*
.*....**
****..**....**
*..***...**
..*.....*..*..*
...**.......*.*
....**....***.*
......*...**
......*........*
......*..****..*
.......*...*...*
.........*
............**.**
#P 23 -44
......*
.....**
.....*.*
.........*
.......*..*
.*....**
****..**...*
*..***...******
..*.....*....**
...**............*
....**.........*.***
.........*....***
......*.*
......*............*
.......****...*.*..*.*
.......***..**..*..*
............*........***
.........*.............*.**
.........*..*...........*
.........*.*..........**
.............**........*
..............*........*
.
...............**.***
...............**
................*...*
.................**
#P 23 -9
......*
.....**
.....*.*
.........*
.......*..*
.*....**
****..**...*
*..***...*****
..*.....*....*.*
...**........*..**
....**...*..****...**
..........**.**...*
......*.*.*........*.**
......*..*.*........****
.......**...............*
.......**...............**
........*.**...***.***..**
...............*
.................*
.........**..........***
..........*.*....*...***
...........******......*
.............**.*****.*
............*.**..*...*
.............*.*...*****
..............*.*...**
#P 23 27
......*
.....**
.....*.*
.........*
.......*..*...**
.*....**.....**
****..**....*..*
*..***...**.*.**
..*.....*..**.**
...**........*...*
....**...*....*..*
......*...***
......*..........*.....*
......*.....*..*****..**
....****..**.*........*.*
...**...*.*......*.*.**
.....*...*......****...*
.......*.*..**.*
........*...**.***
............**
.............*..*
.
.............*
............*****
............*.*
#P 23 58
......*
.....**
.....*.*
.........*
.......*..*
.*....**
****..**...*
*..***...******
..*.....*....**
...**............*
....**.........*.***
.........*....***
......*.*
......*
.......****...*.*
.......***..**..*
............*
.........*
.........*..*
.........*.*
#P 66 -81
...**
...*.*
...*
**.*
*....*
*.**......***
.....***....**
......***.*.*
.............*
......*.*
.....**.*
......*
....**.*
.......*
.....**
#P 63 -56
.........**
.........*.*
.........*
..........***
..........*.***
..........*..**
............*.*.**
...........**.*.*
..........**....*
***
*..***..*...**
.*.*...**
...**.**..*
....**....*
....****
.
......***
......*
#P 63 -28
.........**
.........*.*
.........*
..........***
..........*.***
..........*..**..**
............*.*.*.*.**
...........**.*.**.**.*
..........**....*
***............*
*..***..*...**
.*.*...**.........***
...**.**..*.......*
....**....*........*
....****
.........*
......***
.....*.*
.....**....**
.......*...*.*
......**...*
......*
.......*
#P 65 10
.......*
......**
......*.*
.
........*.*
......*.*.*
.*...**.*.**
****..*.....*
*..**.**...**
..**....*
....**...*
.....***..*.****
.....*..*..***
.......***
.........***
..........**
#P 65 37
.......*
......**
......*.*
.
........*.*
......*.*.*
.*...**.*.**
****..*.....*...***
*..**.**...**...*
..**....*........*
....**...*.........*
.....***..*.****...*.*
.....*..*..***
.......***...........*.*
.........***.........*.*
..........**..........*
...........................*
......***............*.*.**.*
......*..*.........*.....*..*
.......*..........****...**
.........**.......*......***
...........*......**.**....*
............**.*.**..**..*..**
.............***.*.****...*
...............*******........*
..................*.**......*.*
.................*..**.......**
................**....*.......*
................*.....**...**.**
......................*....**.*
.......................****....*
..........................*.*...*
.........................**.*.*
#P 65 73
.......*
......**
......*.*
.
........*.*
......*.*.*
.*...**.*.**
****..*.....*...***
*..**.**...**...*
..**....*........*
....**...*.........*
.....***..*.****...*.*
.....*..*..***
.......***...........*.*
.........***
..........**...........*.*
.......................*.*
......***...............*
......*..*.............*
.......*...............*.*
.........**..............*
...........*.............**
............**............*.**
.................*............*
.............*.****........**
...............*..*..*.....**
....................*.*......*
..............................**
.....................**.**
.....................**...*
.......................**
..........................**
#P 107 -22
..........*
.........**
.........*.*
...........*
............*
.........*.**
..........*
.
...........**
.**..*.....***.....**
**....*......**..*.**
..**.*..**.......**...*
....**..**........*....***
.........**...**........*.*
..........*..*.**......*.**
.............**........***
..............*.........**
..........**
...........**
.........**
.........**
.
...........*
............*.**
............**.**
............*.***
.............**
#P 110 27
.......*
......**
......*.*
.
............*
......*******
.*...*..****..*
**..*.........*
*.***..**
...**...*.*.*.**
...***.**.......***
.
....*.*............*
....*.**.........***.*
....*.*.........***.****.*
........*......*.**..**.***
........*.*...**.*.....****
...............*.*
.........*.**
...........**...........**.**
...........**...........**
............***...........*
.
...............*
...............***
...............***.**
...............***.*
...............*..**
#P 121 80
..........*
.........**
.........*.*...*
.............**
..............*..*
............**.*..*
........***.**....*
.......*..*....*
......*....*....**
.**...*.....*.*.**
**....**.........*
..*.....*.........*
.....**..*......***
...*.**...........*.*
...**....*.........*.**
..*..*.*............****
........**..*
....*...***.*
.....**....***.........**
..............*.......**.*
.............*.*......*..*
..............**......*
..............**...***...*
...............*..**....*.*
..................*....*
...................**.*
.......................*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,259 @@
#Life 1.05
#D 2c/5 spaceships
#D By Hartmut Holzwart, Dean Hickerson, and Tim Coe.
#N
#P -32 -37
......*.*
...*....*
..***....*
.*.*
**..**....*
.**..*****
.
.
.
.**..*****
**..**....*
.*.*
..***....*
...*....*
......*.*
#P -22 -22
.*
.*.*
*..*
.*.*
.*
#P -32 -17
......*.*
...*....*
..***....*
.*.*
**..**....*
.**..*****
.
.
.
.**..*****
**..**....*
.*.*
..***....*
...*....*
......*.*
#P -22 -2
.*
.*.*
*..*..***
.*.*..**
.*
#P -32 3
......*.*
...*....*
..***....*
.*.*
**..**....*
.**..*****
.
.
.
.**..*****
**..**....*
.*.*
..***....*
...*....*
......*.*
#P -22 18
.*....**
.*.*..**
*..*
.*.*..**
.*....**
#P -32 23
......*.*
...*....*
..***....*
.*.*
**..**....*
.**..*****
.
.
.
.**..*****
**..**....*
.*.*
..***....*
...*....*
......*.*
#P 0 -43
......*.*
...*....*
..***....*
.*.*
**..**....*
.**..*****
.
.
.
.**..*****
**..**....*
.*.*
..***....*
...*....*
......*.*
#P 0 -20
.............................*
......*.*..................**.*
...*....*.................*
..***....*.........**....*
.*.*..............***...**.*....****
**..**....*.............**.***...*
.**..*****...*.**.****.......**.*
.............*.*...*.*.**..**..*
............*....*.*
.............*.*...*.*.**..**..*
.**..*****...*.**.****.......**.*
**..**....*.............**.***...*
.*.*..............***...**.*....****
..***....*.........**....*
...*....*.................*
......*.*..................**.*
.............................*
#P 0 4
.......................**
......*.*.........***.***.....*......**
...*....*.........*..*.*.....***...******
..***....*........****.**....***..*...***
.*.*...................*..*....**
**..**....*.........*..*..**...**.*.**
.**..*****...*.*..*.*..*.*..*......**..*
.............*.**.*..*.*.**.****....*.***
............*.....*...**.................*
.............*.**.*..*.*.**.****....*.***
.**..*****...*.*..*.*..*.*..*......**..*
**..**....*.........*..*..**...**.*.**
.*.*...................*..*....**
..***....*........****.**....***..*...***
...*....*.........*..*.*.....***...******
......*.*.........***.***.....*......**
.......................**
#P 0 28
.............................*..*
......*.*....................*..*
...*....*...................*....*
..***....*.................*.**
.*.*.....................*..**
**..**....*.......*...***....*
.**..*****...*.*...*.*......*
.............*.**.**.*..****
............*
.............*.**.**.*..****
.**..*****...*.*...*.*......*
**..**....*.......*...***....*
.*.*.....................*..**
..***....*.................*.**
...*....*...................*....*
......*.*....................*..*
.............................*..*
#P 54 -45
..**......*..*
.*****....*..*
*....*.****
.**.*..**
..*.*...**
...**.*.*.**..*
....****......*
......*.....*
........**.*
........**
........**.*
......*.....*
....****......*
...**.*.*.**..*
..*.*...**
.**.*..**
*....*.****
.*****....*..*
..**......*..*
#P 68 -13
.*
**
.*
#P 54 -21
..**......*..*
.*****....*..*
*....*.****
.**.*..**
..*.*...**
...**.*.*.**..*
....****......*
......*.....*
........**.*
........**
........**.*
......*.....*
....****......*
...**.*.*.**..*
..*.*...**
.**.*..**
*....*.****
.*****....*..*
..**......*..*
#P 53 4
.............*..........*............*..*
.......***...*...*...*...*...........*..*
..**...**.**...**..***..............*....*
.******...*....**..................*.**
*...*..**...........***..*.......*..**
.**..**..*....*...*..**.**....***....*
..***.*........*.**....**..*.*......*
....*.****....*..*......****.*..****
...............***
....*.****....*..*......****.*..****
..***.*........*.**....**..*.*......*
.**..**..*....*...*..**.**....***....*
*...*..**...........***..*.......*..**
.******...*....**..................*.**
..**...**.**...**..***..............*....*
.......***...*...*...*...*...........*..*
.............*..........*............*..*
#P 56 27
...*
.*.*....*
**.***...*....*
.**.*........*.*
......**...***
.....*...*
......**....****
......**.****.**
.
.
......**.****.**
......**....****
.....*...*
......**...***
.**.*........*.*
**.***...*....*
.*.*....*
...*
#P 30 -46
......*..**
.....*
.....*....*
.....*.**
..**.***
.******
*....**
.**.***
..**......*
....*******
.
....*******
..**......*
.**.***
*....**
.******
..**.***
.....*.**
.....*....*
.....*
......*..**

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,867 @@
#Life 1.05
#D c/2 flipper spaceships
#D By Hartmut Holzwart.
#D
#D There are many flippers missing from this
#D collection, due to extreme biodiversity.
#N
#P -125 -17
****
*...*
*
.*..*
#P -125 -1
*****
*....*
*
.*...*
...*
#P -125 15
******
*.....*
*
.*....*
...**
#P -115 -41
****
*...**.*
*....*.*
.*..*
.
.
.******
.*.....*
.*
..*....*
....**
#P -111 34
******
*.....*
*
.*.....*
...**..*
.....*
....*..*
.....*.*
.
******
*.....*
*
.*....*
...**
#P -113 -58
..........*.....*
..........*
.....***..*.....*
.....***...*****
.**...**
**.**
.******
..***...*
....*
....*...*
....****
#P -95 -44
****
*...*.*
*.....**
.*....**
......*
...*********
...*........*
...*
....*...*...*
.
****.**
*...**.*
*....*.*
.*..*
#P -72 -18
..***.*
.****.*
**
.*.*
..****.*
...***
.
.
......*****
......*....*
......*
.......*...*
.........*
#P -105 -21
.........**
.......*....*
......*
......*.....*
......******
.
.
.
....************
....*...........*
....*
.....*..........*
.................**
...*................*
..*
..*.................*
..******************
.
.
.
************************
*.......................*
*
.*......................*
.....................**
...*................*
..*
..*.................*
..******************
.
.
.
....************
....*...........*
....*
.....*..........*
.............**
.......*....*
......*
......*.....*
......******
#P -95 32
..****
..*...*
..*
...*..*..*
.......****
.*........*
*.........*
*
*********
........**.**
........*
........*.**
..****
..*...*
..*
...*..*
#P -98 57
...........***
..........*****
******...**.***
*.....*...**
*
.*....*
...**...**.*
........***
.
******.....***
*.....*...*****
*........**.***
.*....*...**
...**
#P -88 -66
****........***.***
*...**.*.**..*..*
*....*.*.....*.*.......*.*
.*..*.....*..***.....**..*.**.*
................***..**.......**
.............***.........*
.******.....******..****.*....**
.*.....*...**.***..........**.*
.*..........**....***.**.*
..*....*.........*.*.*...*
....**...........***.**
..........*..**.*.*...*..*.**
*****.*..**..**.*.*....*.*
*.....*..*..*
*.....*......****.*
.*...........**.*.*
#P -72 -44
****
*...*...........*.*
*..............*..*
.*..*..*......**
.....****.....*.*
.*......*....*.*..*
*.......*...***.**
*...........*
*******.....***.**
......**.**..*.*..*
......*.......*.*
......*.**....**
****...........*..*
*...*...........*.*
*
.*..*
#P -74 4
..******
..*.....*
..*
...*....*
.....**
.
.....*.*
.**..*.*
**.**.*
.**
..**..*
.......*
....*
....*..*
.....*
.....**
.***.*
.*...*.**
.*.*.*
..**.*.**
.....*
....***
.....**
....**
..*
.*....*
.*....*
.*****
#P -74 41
****
*...*
*
.*..*
......**
....*
...*****
..*.**
.**
..**
...**.*
......*
..*
**...*
*.....*
*...**..*
.**..*
......*.*
#P -73 67
******
*.....*
*
.*....*
...**
.
....***
.
..**...*
.*.*
**..**
.**
..*****
.
.....**
.
.**
**.***
.*****
..***
#P -57 68
.*****
.*....*
.*
..*...*
....*
.
...***
..*
.**
**.***
.*.....*
..***..*
....*
.......*
.
..**
.**.****
..******
...****
#P -58 34
.**
**.****
.******
..****
.
.
.*******
.*......*
.*
..*.....*
....*
......**
....*
...*****
..*.**
.**
..**
...**.*
......*
..*
**...*
*.....*
*...**..*
.**..*
......*.*
#P -56 -18
..***.*
.****.*
**
.*.*
..****.*
...***
.
.....*
....***
.
..**.**
..*
..*
...***
.
.....*.*
.....*.*
.....**
..***
.*
**....*
.***
..***.**
....*
.
...*.*
.**.*
.*..*..**
.*.*
..***
....*.*
......*
.
.
.******
.*.....*
.*
..*....*
....**
#P -45 -44
****
*...*
*
.*..*.....*
....*...**.*
.*...*..**
*......*....*
*....*.***..*
*****...*.*
.......**.*
.........*
..........*
****
*...*
*
.*..*
#P -47 -65
..****....*.*
..*...*..*
..*......*..*..**
...*..*..***..*
......*.......***
.*.....*....***
*..........**.*
*......*..**.*.*
*******....*.*
.............*
..........*
........*.....**
..****...*.....*
..*...*..**.*
..*........*
...*..*
#P -40 -18
..***.*
.****.*
**
.*.*
..****.*
...***
.
.....*
....***
.
..**.**
..*
..*
...***
.
.....*.*
.....*.*
.....**
..***
.*
**....*
.***
..***.**
....*
....*
..***
.*....*
**....**
.**...**
..*..***
.....**
.....*.*
..***
.****
**.**
.**...**
......**
......*
...***
..***
.*.*
**.*.**.*
.**.*
..**
.
....*
....*
.**..*.*
**...***
.**.*
..*...**
...*
.....**
.....*
.....**
....**
..**.*
..*
..*.*
...**.*
....*..*
.
.
.....*
..**.***
.**..**
**..**
.**.***
....**
#P -24 -43
....*..*
..***....**
.*......****
**.**.*.*..*
.**....*..**.*.*
..*...*....***.*...**
...***......*..*.*
.....*.......*...*...*
....*..*....*..*.*....*
........*...*.....***
..**.......***.*
.*.**...*.*....*
**...**..**
.**.....**
..*****
.....*
#P -24 -19
................**
..***.*........*
.****.*...****.***
**......*.*...**
.*.*....*......*
..****....**...**
...***.**....*.**
..........****.*
.........**.....*
......*..*.****
.....*......*.**
..**.**.***
.**..**....***
**..**...*....*
.**.***..**
....**.........**
................*
#P -18 6
*****
*....*
*
.*...*
...*
.
....****
...*..*
...*..*
...*..*
....***
.
.....*
..***
.*
.*
.**.**
.
...*
.......*
....**
...*
...*..*.*
...*
....*...*
.....*..*
......*
.
*****
*....*
*
.*...*
...*
#P -24 47
........*
......*****
.....**...*...*.*..*
..**...*.***.*....*...*
.*...***..*.*.*.**.*..*
*...*.**.****...****
*
***...**********..**
......*
***...*********..*
*................*
*...*.**.**...*...*
.*...***...**.......**
..**...*.*....**.****
.....**.......*
......***.*
........*.*
#P 4 -44
....................*
.**...*...........*...*
**.**...*........*
.****.**.........*....*.....****..*
..*****...**....*.****.....*....*.*
..........***..**........**.**
....**......**...........*..******
...**.*****.....**.**.**....******
....******...**....**.....**
.....***...***...*..*.***
..........**.**.....***
.........**.*.........****
.............****.......**...****
....**......*.***.*******...******
...**.***..........***...*.*.****.*
....*****.*..*..*.*...*..*..*
.....*...**...*.......*..*.......*
......*.....*..*..........*****.*
.**.............*.....*.....**..*
**.**.***........*****.......*..*
.****
..**
#P 4 -12
....................*
.**...*...........*...*....***
**.**...*........*........*****
.****.**.........*....*..**.***
..*****...**....*.****....**
..........***..**
....**......**
...**.*****.....**.**.**....**
....******...**....**...*
.....***...***...*..******.***
..........**.**.....*.*
.........**.*.........*..***.*
.............****........***.*
....**......*.***.*******.**
...**.***..........***
....*****.*..*..*.*...*
.....*...**...*.......*....***
......*.....*..*..........*****
.**.............*.....*..**.***
**.**.***........*****....**
.****
..**
#P 4 20
.................*..*
.**...*.........*
**.**...*.......*...*...******
.****.**...*.*..****....*.....*
..*****...**.*..........*
..........*...........**.*....*
....**........*......***...**
...**.*****....*.....*..*
....*******.*..*.....***
.....***...**.*......*
.........**..*.*.**
.........***.**....**.**
.............*...*
....**.......*.......***
...**.***.****..*....*.*
....*****............**
.....*...*
......*...*..*...*..*...******
.**........**...*.......*.....*
**.**.***.......*...*...*
.****...........****.....*....*
..**.......................**
#P 52 -43
...........**
..........****
.........**.**
..........**........**.*
.**................**...*
**.****......**....**
.******....*.....*....**
..*******.**...*.*
......*..****
......*...*
.....***.*
........***
..........*..**.*.*
.**.........*...*..*.*
**.****.....*.....****
.******....**......*...*
..****....****.......*
.........**.**.......*
..........**
#P 52 -19
...........**
..........****
.........**.**....................**
..........**........*.....*......*****
.**................*.*..**......*...***
**.****......**..**...*.*.*.*.*..**..**
.******....*....**....***...***.*.*
..*******.**...**.*.....*.......*
......*..****....*..*.......**.****..*
......*...*.......*.*.......**....*..*
.....***.*.........*.*......*..***
........***......*.*.........****..**
..........*..**.**.*....*...*....*.**
.**.........*...**.*..**....**.....*
**.****.....*.....**.....**......*.**
.******....**......*....******..**.**.*
..****....****.......**..***.....**
.........**.**
..........**
#P 52 5
...........**
..........****..............**
.........**.**.............**.**
..........**........*..***.*****
.**................*.*..*.*****
**.****......**..**...*.***
.******....*....**....*.***
..*******.**...**.*...****..**
......*..****....*..*.*.*....***
......*...*.......*.*.***....**
.....***.*.........*.**........*
........***......*.*.........***
..........*..**.**.*..**....**
.**.........*...**.*....*...*
**.****.....*.....**....*....*
.******....**......*.....*
..****....****.......*.****
.........**.**..........**.*****
..........**................****
.............................**
#P 52 29
.............*..*
............*
............*...*
............****........*..*
.**...............***...*..*
**.****.........**.**...*
.******....*.*..*....*..**.*
..*******.**.....****.*
......*..***.**....*.....**
......*...*
.....***.*
........***..**.......*
..........*...*...**..*****
.**.........***.**..*.*
**.****.....****...*.**....*
.******......*.....***.**.*
..****......*.....***....*
............*...*
............****
#P 99 -56
........**.......................*.**..**...**
.......**.**...........**.*.....***...****.****
.**.....****.........*.**...*.*.....*.*..**
**.**....**.....**.*.*.**.*.*..*.***.....**
.****............****...***.*.*.....*.*..**
..**...******..**........*......***...****.****
........*.***.*..................*.**..**...**
......*.*......*..***..**
.....**.*..*..**..*...**
.....*...*.......****.**
......**.*..**....***...**
......**.**..........*...........*..*.*....*
.............*....*.....**.*....*..***.**..**..*
.**.....**...*.**........*.*..*.*......**...***
**.**............*.**.*.....**..**..**..*...*
.****...**...........******...*.*......**...***
..**...**.**............**......*..***.**..**..*
........****............**.......*..*.*....*
.........**
#P 99 -33
......................................*
........**......................***...**
.......**.**...........**.*....****...**
.**.....****.........*.**...*.**.............*
**.**....**.....**.*.*.**.*.*...**...*****.**
.****............****...***.*.*.**.**.*****
..**...******..**........*......*...*.**..*
........*.***.*....................*.*
......*.*......*..***..**...............**....*
.....**.*..*..**..*...**................***..*.**
.....*...*.......****.**...................*
......**.*..**....***...**............**...*...**
......**.**..........*...........**...****.*
.............*....*.....**.*.....***...****
.**.....**...*.**........*.*..***....**.....*
**.**............*.**.*.....**.*..*...*.....**
.****...**...........******....**..*.**.....**
..**...**.**............**....***.***.**
........****............**........**..*
.........**............................*
#P 99 -8
........**.....................*.*.**....***
.......**.**.................*****....**
.**.....****........*.......*.....**.***..*
**.**....**.....**...*...*..*..****.**
.****............*.***.**.*..**.**......**
..**...******..**.....*......*........*..**
........*.***.*.........*.*.*.........**.....*
......*.*......*....*......*..........**..**.*
.....**.*..*..**.**...*.*.................**
.....*...*..........**..*.*............*.***
......**.*..**....*.........**........*....***
......**.**.......*...****............*..*...*
.............*......**.*.***...*......***
.**.....**...*.**....................**
**.**............*..*.**..***..**...***.*..*
.****...**........**........**...*...*.....*
..**...**.**..................***.*.....****
........****....................*.**.....*.**
.........**
#P 99 16
........**.....................*.*.**..*
.......**.**.................*****...*..*
.**.....****........*.......*.....*.*..**
**.**....**.....**...*...*..*..****.**.***....***
.****............*.***.**.*..**.***...*.*....*****.*
..**...******..**.....*......*.....***.**......*....*
........*.***.*.........*.*.*..........*....**.*....*
......*.*......*....*......*.....****....***...*
.....**.*..*..**.**...*.*......*....**...***.....*..*
.....*...*..........**..*.*....***.*..*...........*.*
......**.*..**....*.........**......*...*....*...*
......**.**.......*...****........*.....*..****.**
.............*......**.*.***...*...****.****.**..*
.**.....**...*.**..................*.........**....*
**.**............*..*.**..***..**...***........*.*
.****...**........**........**...*..**.*
..**...**.**..................***.*..**
........****....................*.**..*
.........**
#P 99 40
........**
.......**.**
.**.....****.....................*.**.***..*...*
**.**....**........*.**..**....*******...***.***
.****...........*******.*...*.*..........**...**
..**...******..***.....*...****.**.*.....*...**
........*.***.*..*...*.......*..*.**.****....**
......*.*......*..*..*..**.....*..*...**...**
.....**.*..*..**....*........*.*..*.....*..**.**
.....*...*.......*........**.*.*.........*.*.**..*
......**.*..**........*...*....*....*.****......*
......**.**.......*******......*........****
.............*..**..*...*..***.*.****..**.***
.**.....**...*.*.*..**.*..***.**...*.*...**...*
**.**..............*....*.**....***...*...*...*
.****...**........................*...*....**.*
..**...**.**...........................**
........****
.........**
#P 168 -43
............*.*.............*..*
...........*
...........*..*................*
...........*.**.*.......*******
....**......**...*....*
...**.****.*.....****.*..*.....***
....******.....*..*...........*****
.....*.............*.........**.***
......*.............**........**
.**
**.**.***
.****
..**
#P 168 -27
............*.*.............*...*
...........*
...........*..*.................*
...........*.**.*.......********
....**......**...*....*
...**.****.*.....****.*..*
....******.....*..*
.....*.............*
......*.............**
.**
**.**.***
.****
..**
#P 168 -11
............*.*
...........*................**
...........*..*...........*****
...........*.**.*.......***.***
....**......**...*....*....*
...**.****.*.....****.*..**
....******.....*..*
.....*.............*
......*.............**
.**
**.**.***
.****
..**
#P 170 20
............................*.**
..........................******
.........................*.....****.*
.........................*..**..*....*
.......***...............**.*.****.*.....*
..******...................**.......****.*
..*...**...**..**.**........**.......*
..*...*.......****..*..**...**.........**
...**.*..**..........*..**.*...**.....*
....****..*....**.*.*..*..*.......**...*
........*...*..**.*..**.***......*.....*...*
..**....**..****...*.*..*.......*.......******
**.....*.***.*.....*.*.**......*....*.......**
*..*..***..*.*............*....*...*........**
*......**.............*...*....*..*......*..*
.**.....*...**....*****.........**..........*
.........*****.....*..***..........*...**.*
...*...*.*...*..*..*....**...*...*.*...*
...*.*.*.*.....*.**....*..*...*...*...*..*
..**.**...***.***.*....****.*.*........**
..*..*............*..*...***..*......*
..*....*..................**...*..*..*.**
...*..****...............*...*....*.*...*
.....*..**...............*..*****.**
.........................**...*....*
...........................***...*
.............................*

View File

@ -0,0 +1,703 @@
#Life 1.05
#D c/2 flipper spaceships with B-heptomino front ends
#D By Hartmut Holzwart.
#D
#D These are set apart by their b-heptomino
#D front ends. Most flipper front ends look
#D like *WSS.
#N
#P -148 -53
....**
.**
**..*.*
.**.*.*......**......**
..*...**....****....**.***
...**.***.....*...*.******
....**.......***..**..***
......*.**.*.*.......*
....***.....*...*.*..*
....***.**...**..*
......*..**.**.*...*
..**.**.*...***.....******
.*.**................*****
**....................***
.****
..***
#P -148 -30
..................**
....**...........**.**.......****
.**...............****...**.*....*
**..*.*............**...****
.**.*.*......**..................*
..*...**....****.......**.*.*
...**.***.....*...*...*.*..*
....**.......***..**...*
......*.**.*.*........*.*
....***.....*...*.*.*.**
....***.**...**..*...*.*.*
......*..**.**.*...**..*
..**.**.*...***........*..*
.*.**..................**.**
**......................**...****
.****.............**.........*...*
..***............**.**.......*
..................****........*..*
...................**
#P -148 -6
..................**
....**...........**.**.......***
.**...............****...**.*.....*.*
**..*.*............**...****....**
.**.*.*......**................**....*
..*...**....****.......**.*.*...*
...**.***.....*...*...*.*..*.......*
....**.......***..**...*........**
......*.**.*.*........*.*.......***
....***.....*...*.*.*.**........**
....***.**...**..*...*.*.*......**
......*..**.**.*...**..*..........*
..**.**.*...***........*..*.....*.*
.*.**..................**.**...*..*
**......................**...**...*
.****.............**.........*....*
..***............**.**.......*...*
..................****........**
...................**
#P -148 18
..................**
....**...........**.**
.**...............****...*
**..*.*............**...****
.**.*.*......**.............*
..*...**....****.......**.*
...**.***.....*...*...*.*.*..*
....**.......***..**...*..*.*
......*.**.*.*........*.*...*.**
....***.....*...*.*.*.**.*.*....*
....***.**...**..*...*.*.*.*.*.*
......*..**.**.*...**..*.*..*
..**.**.*...***........*.**
.*.**..................**...*
**......................*..*
.****.............**.....*
..***............**.**
..................****
...................**
#P -148 42
..................**
....**...........**.**
.**...............****...***
**..*.*............**...**.*
.**.*.*......**............**
..*...**....****.......**.***
...**.***.....*...*...*.*.*.**
....**.......***..**...*..*.*
......*.**.*.*........*.*.*.*.*..*
....***.....*...*.*.*.**.*.*.**.*
....***.**...**..*...*.*.*.*.*.*
......*..**.**.*...**..*.*.*
..**.**.*...***........*.*
.*.**..................**
**......................*.**
.****.............**.....*
..***............**.**....**
..................****
...................**
#P -100 -79
......................*..*
.....................*
....**...............*...*
.**..................****
**..*.*
.**.*.*......**
..*...**....****
...**.***.....*...*....***
....**.......***..**
......*.**.*.*......***.**
....***.....*...*.*
....***.**...**..*.....*
......*..**.**.*...*..*.*
..**.**.*...***
.*.**...................*
**....................*..*
.****................*
..***................*...*
.....................****
#P -100 -55
................................*
..............................*..*
....**
.**.........................**.**
**..*.*......................*.**
.**.*.*......**..........***.*.***
..*...**....****........**.*.*.*.**
...**.***.....*...*........*.*...*
....**.......***..**...***.*.**...*
......*.**.*.*......***.**.*
....***.....*...*.*......*..*..*
....***.**...**..*......**..*...*
......*..**.**.*...*..*.*.*.*.*.***
..**.**.*...***.........*.*.*.*..*.*
.*.**....................*..*.*
**........................***.*
.****.......................*....*
..***........................**..*
...............................**
#P -100 -23
......................**
.....................****
....**..............**.**
.**..................**
**..*.*
.**.*.*......**..........*...*
..*...**....****........***
...**.***.....*...*
....**.......***..**...***..**
......*.**.*.*......***.**
....***.....*...*.*......*
....***.**...**..*......****
......*..**.**.*...*..*.*..*
..**.**.*...***.........*...*
.*.**....................*.*
**....................*****
.****................****
..***...............**.**
.....................**
#P -100 1
......................**
.....................****
....**..............**.**
.**..................**
**..*.*
.**.*.*......**..........*...*
..*...**....****........***
...**.***.....*...*
....**.......***..**...***..*.*
......*.**.*.*......***.**...**.*
....***.....*...*.*......*
....***.**...**..*......****..*.*
......*..**.**.*...*..*.*..*
..**.**.*...***.........*...*
.*.**....................*.*
**....................*****
.****................****
..***...............**.**
.....................**
#P -100 27
....**
.**.......................**.*
**..*.*................****...*
.**.*.*......**......**
..*...**....****.....**..**...*
...**.***.....*...*.*....*..**
....**.......***..**.*..*
......*.**.*.*
....***.....*...*.*...*.**
....***.**...**..*...**....*
......*..**.**.*...*.*..**.*
..**.**.*...***.....**.***.*
.*.**.................*.....*
**.....................***..*
.****....................*..*
..***
#P -100 51
....**
.**.......................**.*
**..*.*................****...*
.**.*.*......**......**
..*...**....****.....**..**...*
...**.***.....*...*.*....*......**..*
....**.......***..**.*..*......*.**
......*.**.*.*...............*...****
....***.....*...*.*...*.**...**.*
....***.**...**..*...**....*...**.***
......*..**.**.*...*.*..**.*.....**
..**.**.*...***.....**.***.*.....**
.*.**.................*.....*
**.....................***..*
.****....................*..*
..***
#P -100 74
.......................................................**..........**
....**................................................*****..........*
.**.......................**.*........................*....*....***
**..*.*................****...*...........*..........*.***...*.****
.**.*.*......**......**.............*...**.*........**.*...*.*.*
..*...**....****.....**..**...*....*....*...*......**..*.**
...**.***.....*...*.*....*....*...**.....*.*.....*..*.*....*.**
....**.......***..**.*..*......**.***...**.*.**..*..*.*.**....**
......*.**.*.*...............*.**..*.***.*.*....*.*.*.*....*..**
....***.....*...*.*...*.**...**..*........*.*...**.*.*.*...*.**
....***.**...**..*...**....*.........**.*.*.*..***.*.*.*..*..*.*
......*..**.**.*...*.*..**.*......*******.*.*......*.*.*..**..**
..**.**.*...***.....**.***.*.......**....*.........**.*.**..*.*.**
.*.**.................*.....*.......*....*...*......*.*....*.*.*.*
**.....................***..*............*..*.........*.**.....**.**
.****....................*..*........................**.**.*.....*
..***.................................................**..........**.*
...................................................................*.*
#P -44 -79
..........*..*
.........*
....**...*...*
.**......****
**..*.*
.**.*.*......**
..*...**....***
...**.***.....**
....**.......*
......*.**.*.*.*
....***.....*.*
....***.**...**
......*..**.**.*
..**.**.*...**
.*.**
**........*
.****....*
..***....*...*
.........****
#P -44 -55
..........*
.........*
....**..**..****........**
.**......***....**.....**.****
**..*.*...**...**..*....******
.**.*.*....*.....*.......****
..*...**...******
...**.***............**
....**.......**.*****.....*
......*.**.*.**.*******.**
....***.....**.*.........**
....***.**....*.....*.**.*
......*..**.*....**.**.....*
..**.**.*....*********
.*.**.......*.....*
**...........***.***....**
.****....**.*.....*....**.****
..***...**.**...**......******
.........****............****
..........*
#P -44 -31
..........*
.........*...............***
....**..**..****........*****
.**......***....**.....**.***
**..*.*...**...**..*....**
.**.*.*....*.....*
..*...**...******
...**.***............**....*
....**.......**.*****.....*
......*.**.*.**.*******.**
....***.....**.*.........**
....***.**....*.....*.**.**
......*..**.*....**.**
..**.**.*....*********
.*.**.......*.....*......***
**...........***.***....*****
.****....**.*.....*....**.***
..***...**.**...**......**
.........****
..........*
#P -44 -7
..........*...............*...*
.........*...............**..*.*
....**..**..****........**.**
.**......***....**.......***..*...**
**..*.*...**...**..*........*.**.**.**
.**.*.*....*.....*.........*..*..*****
..*...**...******......*.**..**.*****
...**.***............*...*.......*
....**.......**.*****.**.*....**.*
......*.**.*.**.******.*.*.....**
....***.....**.*........*......***
....***.**....*.....*.*.*.**...*
......*..**.*....**.**.**.....*
..**.**.*....*********...*....***
.*.**.......*.....*........*.*
**...........***.***......**.*.*.*****
.****....**.*.....*......**..*....****
..***...**.**...**......**...*.....**
.........****............*..**..*
..........*...............*....*
#P -44 17
..........*
.........*
....**..**..****
.**......***....**
**..*.*...**...**..*...............**
.**.*.*....*.....*.......**.**....*...*
..*...**...******......*...***....*..*
...**.***............*...*.*....*
....**.......**.*****.**......*.**
......*.**.*.**.******.*.....*
....***.....**.*.........*....*...*
....***.**....*.....*.*......**...*
......*..**.*....**.**.*...*.*..*
..**.**.*....*********..**..*.*..**
.*.**.......*.....*.......*........***
**...........***.***................**
.****....**.*.....*
..***...**.**...**
.........****
..........*
#P 4 -78
............*
....**....*..*
.**.......*
**..*.*...*.***
.**.*.*.*..*
..*...***..*
...**.**
....**
......*..**
....***
....***.*
......*.**
..**.**..*.*
.*.**.......*.*
**......*......*
.****....**..*
..***......**
#P 4 -54
............*............**
....**....*..*..........**.**.*
.**.......*........****.***.*..*
**..*.*...*.****..*............*.*
.**.*.*.*..*...*....*....**.*.*.*..*
..*...***..*....*.*.****.*...**.....*
...**.**.............****.**..**.*
....**................*...........***
......*..**................**..*..**
....***......................*....**
....***.*.............*....*.*....***
......*.**..........**....**.*......*
..**.**..*.*.....*..**..*...*....**
.*.**.......*.*.**..***.***....*.*
**......*.......*...*..*...***
.****....**..*.*....*.*.***.*....*
..***......**.......*.*.*.......*
.........................*****
..........................**
#P 4 -30
............*............**
....**....*..*..........**.**.*
.**.......*........****.***.*..*
**..*.*...*.****..*............*
.**.*.*.*..*...*....*....**.*.*
..*...***..*....*.*.****.*...**
...**.**.............****.**..**..**
....**................*..........*
......*..**................**..*..*.*
....***......................*
....***.*.............*....*.*...**
......*.**..........**....**.*....*
..**.**..*.*.....*..**..*...*
.*.**.......*.*.**..***.***.....*
**......*.......*...*..*...***...*
.****....**..*.*....*.*.***.*...*
..***......**.......*.*.*
.........................*****
..........................**
#P 4 -7
.......................**
............*..........**
....**....*..*......**
.**.......*........*..**.*
**..*.*...*.****.*.*..*.*
.**.*.*.*..*...***.**.*.*.*.*..**
..*...***..*.....*...*.*..**...**
...**.**..........***..*.*.*...*
....**..............**.**....**
......*..**...........*......***
....***..............*...*...*.*
....***.*............**...*...****
......*.**.........**.*.*...*..**
..**.**..*.*.....**...*.*.**.***
.*.**.......*.*.*.*.**.*.**.....*
**......*.......*.*....*.*
.****....**..*.*...**..*.*
..***......**.......***
......................**.*
.......................*.*
#P 4 18
............*
....**....*..*.....*
.**.......*.......*.**
**..*.*...*.****.*....*..**.......**.*
.**.*.*.*..*...***....***...*....**...*
..*...***..*.....*.*.*..***.*....**
...**.**..........**.*.........*....**
....**...............*...***.*.*
......*..**..........**..*
....***..............**
....***.*...........*.**.***..*.*
......*.**.........**.****..*.*..*.*
..**.**..*.*.....**.*....**.....****
.*.**.......*.*.*.*..***...*.....*...*
**......*.......*.*....**..........*
.****....**..*.*..*...*............*
..***......**......*..*
#P 4 41
........................*..*
............*..........*
....**....*..*......*..*...*
.**.......*........*...****
**..*.*...*.****.*.*..*
.**.*.*.*..*...***...*
..*...***..*.....*...*
...**.**..........*..*.*
....**.............***.*
......*..**..........*.*
....***...............*
....***.*..........**.*.**
......*.**........*...*
..**.**..*.*.....**
.*.**.......*.*.*.*......*
**......*.......*.*........*
.****....**..*.*...***
..***......**.......*.*....*
.......................****
#P 4 66
............*................***
....**....*..*.....****
.**.......*.......*...*.....****.*
**..*.*...*.****.*.*.*.**.*.*
.**.*.*.*..*...***...*....*
..*...***..*.....*..*
...**.**..........*.*
....**.............*
......*..**
....***
....***.*...........*
......*.**........*...*
..**.**..*.*.....**....*
.*.**.......*.*.*.*......*.*
**......*.......*.**.**..*.....*
.****....**..*.*...*........*..**
..***......**.......*..*....**.**
....................*..*......*.*
#P 62 -55
....................*.*
............*....****.***
....**....*..*...**..**.**
.**.......*..........*.***
**..*.*...*.***.**.*..*
.**.*.*.*..*...**....**
..*...***..**...****.*
...**.**...........*.**
....**
......*..**
....***
....***.*
......*.**........*.**
..**.**..*.**...***.*
.*.**..........*....*.*
**......*....*.*.**.*..*
.****....**..*.*.*...**
..***......**....**..**..**
..................***.*
....................*.*
#P 60 -31
....................*.*
............*....****.***
....**....*..*...**..**.**
.**.......*..........*.***
**..*.*...*.***.**.*..*..*.*****
.**.*.*.*..*...**....**...*.....*
..*...***..**...****.*....*
...**.**...........*.**....*....*
....**.......................**
......*..**
....***
....***.*
......*.**........*.**
..**.**..*.**...***.*.....******
.*.**..........*....*.*...*.....*
**......*....*.*.**.*..*..*
.****....**..*.*.*...**.....*...*
..***......**....**..**.......*
..................***.*
....................*.*
#P 60 -7
....................*.*
............*....****.***
....**....*..*...**..**.**
.**.......*..........*.***
**..*.*...*.***.**.*..*..*.**
.**.*.*.*..*...**....**...*..*.***
..*...***..**...****.*....*.....**..*
...**.**...........*.**....**.*.**...*
....**........................*.**..*
......*..**....................*
....***.......................**
....***.*....................***
......*.**........*.**......*.....***
..**.**..*.**...***.*.....**...*..***
.*.**..........*....*.*...*....****
**......*....*.*.**.*..*..*.**...*
.****....**..*.*.*...**
..***......**....**..**
..................***.*
....................*.*
#P 60 17
....................*.*
............*....****.***
....**....*..*...**..**.**.........**
.**.......*..........*.***........*...*
**..*.*...*.***.**.*..*..*.**.....*..*
.**.*.*.*..*...**....**...*..*.**
..*...***..**...****.*....*.....*.*
...**.**...........*.**....**.*.**
....**........................*.**
......*..**....................*
....***.......................**
....***.*....................***
......*.**........*.**......*
..**.**..*.**...***.*.....**...**
.*.**..........*....*.*...*....***
**......*....*.*.**.*..*..*.**...**
.****....**..*.*.*...**............***
..***......**....**..**.............**
..................***.*
....................*.*
#P 108 -78
............*...............*
....**....*..*...****....****...*..*
.**.......*....*......*.*.*....*
**..*.*...*.***.*....**........*...*
.**.*.*.*..*...**..*....**.*...****
..*...***..**...**.*.**.**
...**.**.............**.**..**
....**............**.........***
......*..**.......**........*
....***...........*..*.......*.*
....***.*.........*..........*.*
......*.**.............**....**
..**.**..*.**...**..****...****.*..*
.*.**..........*...*.....*.**..*
**......*....*.*.*...***.*.**..*...*
.****....**..*.***...*.***.*...****
..***......**....*........**
...................**.....**
#P 108 -55
..................................**
............*...............*....*
....**....*..*...****......**.**.*
.**.......*....*......*..*..*
**..*.*...*.***.*....**..*....*.*
.**.*.*.*..*...**..*....*....**
..*...***..**...**.*.**.**..**..**
...**.**.............**.**..*****....*
....**............**......*..*..*.*.**
......*..**.......**.........*..******
....***...........*..*....***.***.*.*
....***.*.........*.......*.*.........*
......*.**.............**.**......*...*
..**.**..*.**...**..****..*.*...***
.*.**..........*...*.....**...**..*
**......*....*.*.*...***.***.*.*..*
.****....**..*.***...*.*.***.*.*.*
..***......**....*...............*
...................**.......*.*..**
.............................*....*
#P 108 -31
..............................*.*
............*...............*...*
....**....*..*...****......**...***.*
.**.......*....*......*..*..*.*.....*
**..*.*...*.***.*....**..*....**....*
.**.*.*.*..*...**..*....*....**
..*...***..**...**.*.**.**..***....*
...**.**.............**.**..***..*
....**............**......*..*..*.*
......*..**.......**.........*.**
....***...........*..*....***.*.*
....***.*.........*.......*.*...**
......*.**.............**.**....*.*
..**.**..*.**...**..****..*.*....*
.*.**..........*...*.....**
**......*....*.*.*...***.***.**.**
.****....**..*.***...*.*.***.***..**.*
..***......**....*.............*...*.*
...................**.......*.**..*
.............................*
#P 108 -7
.............................**
............*...............*...*
....**....*..*...****......**....*.**
.**.......*....*......*..*..*.**.*
**..*.*...*.***.*....**..*..*.**.*.**
.**.*.*.*..*...**..*....**......**
..*...***..**...**.*.***....*....*..*
...**.**.............*.....*........*
....**............**...******..*
......*..**.......**..*...**.**
....***...........*..*.*........*
....***.*.........*....****...*.*
......*.**................*
..**.**..*.**...**..*****........***
.*.**..........*...*.......*...**.*
**......*....*.*.*...****..**.....*
.****....**..*.***...*.**.**.*.**.*
..***......**....*.........*...**.**
...................**.......*.*
.............................*
#P 108 18
............*..................*.*
....**....*..*...****.........**.*
.**.......*....*......*......****
**..*.*...*.***.*....**...**..*
.**.*.*.*..*...**..*...*...*.*
..*...***..**...**.*.*****..*....**
...**.**.............**....*.....**
....**............**.......*...**.***
......*..**.......**..**.....**.*
....***...........*..*.......*...****
....***.*.........*.....*......*.**
......*.**............*.**.*....**..*
..**.**..*.**...**..**...*....*
.*.**..........*...*..*.***
**......*....*.*.*...****..**
.****....**..*.***...*.**....*
..***......**....*............*.**
...................**..........*
#P 108 41
...............................*
............*..............**....*
....**....*..*...****....**
.**.......*....*......*..**......*
**..*.*...*.***.*....**...*******
.**.*.*.*..*...**..*...*
..*...***..**...**.*.****.*
...**.**.............**..*..*
....**............**.......**.*.*
......*..**.......**..**..***.*.***
....***...........*..*...*.......*
....***.*.........*.....**.*.**...*
......*.**............*.*..*
..**.**..*.**...**..**..*
.*.**..........*...*..*..........*
**......*....*.*.*...****
.****....**..*.***...*.****......*
..***......**....*.........******
...................**......*
#P 108 65
...............................*
............*..............**....*
....**....*..*...****....**
.**.......*....*......*..**......*
**..*.*...*.***.*....**...*******
.**.*.*.*..*...**..*...*
..*...***..**...**.*.****.*
...**.**.............**..*..*
....**............**.......**.*
......*..**.......**..**..***.*
....***...........*..*...*
....***.*.........*.....**.*.**
......*.**............*.*..*
..**.**..*.**...**..**..*
.*.**..........*...*..*..........*
**......*....*.*.*...****
.****....**..*.***...*.****......*
..***......**....*.........******
...................**......*

View File

@ -0,0 +1,668 @@
#Life 1.05
#D c/2 flipper spaceships with narrow necks
#D By Hartmut Holzwart.
#D
#D These all have narrow necks.
#N
#P -157 -63
..........**
.**......**.****
**.***....******
.****..*...******
..**...........*.*
....*...*......*
.....*.*.......*.*.*
.....*.*.*****..**.*..*
.....*..*.......*.***.*
..........*..*
....***....*....**
.....*........**
.**
**.**.*...**
.*****...**.****
..***.....******
...........****
#P -157 -40
..........**
.........**.**..............*.**.*
.**.......****.........*.*.*.*
**.***.....**..............*.**
.****..*.......**.*.*.**...*.***
..**...........**.*.**.*.....*.**
....*...*...*****...**..**....**
.....*.*......*...**............*
.....*.*.***.*..*
.....*..*.......*...*
..........*.*...*...***
....***....*.*...*.******.....***
.....*.........****......*....*.*
.**............*......*......*..**
**.**.*...............**.*.**...**
.*****....**............*..**.*.*
..***....**.**..............****
..........****................*
...........**
#P -157 -9
..........**
.........****.......*
........**.**.....****.*
.**......**......*....*...*
**.***..........**.**.*.*
.****..*.........**.*.*...**
..**......**.**...**...*..*
....*...*.**.**...***..*..*
.....*.*...*..**.....*.*.*
.....*.*.*.*.***.*...*.*.*.*..*
.....*..*.*.*...*.....*.*.**.*
..........*..*....***.*.*.*.*
....***...*.**....**.*..*
.....*....**........**..*
.**........*....*...**
**.**.*...**....**..**.**.*.*
.*****...****....**....**..*
..***...**.**.....***..*
.........**............*
#P -157 15
..........**
.........****.......*.........**
........**.**.....****.*....*....*
.**......**......*....*...*
**.***..........**.**.*.*...*....*
.****..*.........**.*.*...**.****
..**......**.**...**...*..*
....*...*.**.**...***..*..*
.....*.*...*..**.....*.*.*
.....*.*.*.*.***.*...*.*.*.*..*
.....*..*.*.*...*.....*.*.**.*
..........*..*....***.*.*.*.*
....***...*.**....**.*..*
.....*....**........**..*....*...*
.**........*....*...**
**.**.*...**....**..**.**.*......*
.*****...****....**....**..******
..***...**.**.....***..*
.........**............*
#P -157 48
..........****
..........*...*
.**.......*
**.***.....*..*
.****..*.....*
..**
....*...*....**.*
.....*.*..*..***
.....*.*.*.*..**
.....*..*.***
..........**
....***......***
.....*........**
.**
**.**.*
.*****....****
..***.....*...*
..........*
...........*..*
#P -109 -57
.........................*
.......................*..*......*.*
..............**...............*.*
.**..........*****...**.**....*...*
**.***.......*..***.*.*.**...*.*.***
.****..*....*.**....*.*.**.*.*..***
..**.......**.*...*...**.***..*..**
....*...*.**..*.*.........*...*
.....*.*...*.*.*.*.*.**.....*.*
.....*.*.*.*.*.*.*......*..*
.....*..*.*.*.*.*.*.*.*.*.****
..........*.*.*.*....***.*..*..*
....***...**.*.*.*.*..*.**.*.....*
.....*.....*.*.*...*..*.**..*....*
.**..........*.**.**.*......*
**.**.*.....**.**..*.*.*.....**.**
.*****.......**....*.*....*...***..*
..***.................**..*......***
........................**.......*
#P -109 -24
.........****
.........*...*....****
.**......*.......******
**.***....*..*..*******
.****..*....*
..**.........**
....*...*..**.**
.....*.*....*.*
.....*.*.*..*.*.*.*
.....*..*.**.*.**
.........*.*.*.*.*
....***.....**..*
.....*......*..***.***
.**...........**.******
**.**.*.........**.****
.*****...****....**
..***....*...*
.........*
..........*..*
#P -86 -24
.........*...**
......***..**
.....****......*
.....*....**.*
....*.**.**.*
...**.*.**
.**.*...**
.**.*...*
*....*...*.*
**.*....*
.*.*..*..*
..**.*
...*.*.**
.....*.**....*
....**.***.*.*
.....**..*
.......**..***.*
.........*...*.*
#P -109 -1
.............................**
................**..........*
...............**.**.......*.**
.**.............****....**.*
**.***...........*****.....**
.****..*............*.***...*.*.**
..**........**.....*..*.*.*.*...**
....*...*..**.**.*.*....*.......*
.....*.*....*.**...*.**.*.**.*
.....*.*.*..*....*.*..***.*
.....*..*.**.*...*..*....**
.........*.*.*.*...**....*.**
....***.....*....*.......*.*.*
.....*......*****..**....*.**.*.*
.**..........**.....*....*.....*.*
**.**.*...............*****...**.*
.*****..........**........*...**
..***..........**.**.......**.*
................****........***
.................**
#P -109 23
......................*....*
.....................*..***
....................**.....*
.**..................***
**.***................*..**..**
.****..*................**...***
..**........**...******.**...***
....*...*..**.**..........*...**
.....*.*....*.**.........**....*...*
.....*.*.*..*....*....*.*.*.*..*...*..*
.....*..*.**.*..............*.***..*..*
.........*.*.*.*.**.**.....**..****.*
....***.....*....*.*..****.**....**
.....*......*****.......**..*
.**..........**....*.....*.**
**.**.*................**.***
.*****...............*..*...*
..***...............**..*
.....................****...*
......................*...*.*
#P -53 -57
...........*..*
..........*
..........*...*...........***...*
.**.......****............**..*.*
**.***...........*..*...**.**.***
.****..*........**..*.**.*...*.**
..**..........***.*.*.*.....*....****
....*...*.....*......**....*......**
.....*.*.....*.............*......*.*
.....*.*.*........**.*.*..*...**..**
.....*..*.***.*....*...*.***......***
.........*.**..*........*.****
....***.......***...*..*...*.*...**
.....*........***...**..*.....*...***
.**.............**.*.*.**.*...*..*.**
**.**.*....*..*...*...*.*.*.***..**
.*****....*..............***.**.***
..***.....*...*.............*...**
..........****..............*
#P -53 -32
..........*..*
.........*
.........*...*............***...*
.**......****.............**..*.*
**.***...........*..*...**.**.***
.****..*........**..*.**.*...*.**
..**..........***.*.*.*.....*....****
....*...*.....*......**....*......**
.....*.*.....*.............*......*.*
.....*.*.*........**.*.*..*...**..**
.....*..*.***.*....*...*.***......***
.........*.**..*........*.****
....***.......***...*..*...*.*...**
.....*........***...**..*.....*...***
.**.............**.*.*.**.*...*..*.**
**.**.*...*..*....*...*.*.*.***..**
.*****...*...............***.**.***
..***....*...*..............*...**
.........****...............*
#P -53 0
.............**
...........*....*
..........*
.**.......*.....*
**.***....******
.****..*
..**................*.*
....*...*.....*.*.*.**..*
.....*.*.....*****
.....*.*.*............*..*
.....*..*.***..*.......*.*
.........*.**....**...*
....***.......**.****.*
.....*..........*...*.*
.**........*....*
**.**.*...*
.*****....*.....*
..***.....******
#P -53 26
..........******....******
.**.......*.....*...*.....*
**.***....*.....*...*
.****..*...*.........*....*
..**...........****....**
....*...*.....***..*
.....*.*..........***.*
.....*.*.*...*...***.*
.....*..*.***..*.......*
.........*.**.****...**
....***.......**.**
.....*.........**
.**
**.**.*...*******...******
.*****....*.........*.....*
..***.....*.........*
...........*....*....*....*
.............**........**
#P 11 -55
.......................******
.**....................*.....*
**.***.................*
.****..*........*.......*
..**...........**.........**
....*...*.....****..........**..*
.....*.*.........*****.****.**.*
.....*.*.*...*....**....***..*.....*
.....*..*.***..*.**.*.**...*..*.****
.........*.**.***...**........*.**
....***.......**....**......***
.....*.........*.............**
.**.............*
**.**.*................******
.*****.................*.....*
..***..................*
........................*....*
..........................**
#P 11 -30
.**.......................**.*
**.***...................*...*......*
.****..*........*........*........**
..**...........**........**..*..***.*
....*...*.....****...........*.**
.....*.*.........*****.....*...**
.....*.*.*...*....**...*...*....***
.....*..*.***..*.**.*.****......*.*
.........*.**.***...**........*
....***.......**....**....**...*
.....*.........*.........*.**...*.*.*
.**.............*........*......*.**
**.**.*..................****.......*
.*****......................*
..***
#P 11 -9
.........................*.**
.......................******.......*
......................*......*.....***
.**...................*..*.*.....**
**.***................***.*.*....**
.****..*........*........*.**....**
..**...........**.........**.....**
....*...*.....****.......*...****.*
.....*.*.........*****..*.*...*.*.*.*
.....*.*.*...*....**...*....*.*.*.*
.....*..*.***..*.**.*.**.....***.*.*.**
.........*.**.***...**..*.**.....*.*
....***.......**....**....*...*..*.**
.....*.........*..........*.*....****
.**.............*......*..****.*.*.***
**.**.*...............*......**..*****
.*****................*..*****....*...*
..***.................**....**.....*
........................***........*..*
..........................*..........*
#P 11 16
........................*
......................*...*
.**..................*
**.***...............*....*....**.*
.****..*........*....*****....*...*
..**...........**............**
....*...*.....******.......****..**..*
.....*.*.........**.**..**.*....***.*.*
.....*.*.*...*......**..**.*
.....*..*.***..*.***.*.**.**.*....****
.........*.**.***....*....*.*..*.*.**
....***.......**....****...***.*
.....*.........*....**.....*..*.....*
.**.............*....*.........**.*
**.**.*..............*....*....*.*
.*****...............*****
..***
#P 67 -86
.**
**.***...............*..*
.****..*........*....*...*
..**...........**....*
....*...*.....*******.*.*
.....*.*.........**.*.*.*
.....*.*.*...*........*.*
.....*..*.***..*.***.*.*
.........*.**.***...**.*.**
....***.......**.....*.*
.....*.........*....*...*
.**.............*...**.*
**.**.*...............*
.*****
..***
#P 67 -54
.**
**.***...............*..***...*
.****..*........*....*....*****
..**...........**....*......**
....*...*.....*******.*.*
.....*.*.........**.*.*.*
.....*.*.*...*........*.*
.....*..*.***..*.***.*.*
.........*.**.***...**.*.**
....***.......**.....*.*
.....*.........*....*...*
.**.............*...**.*..***..**
**.**.*...............*...***.*
.*****....................**
..***
#P 67 -31
.................................**.**
.**..............................******
**.***...............*..***...*.*.*****
.****..*........*....*....*****.**
..**...........**....*......**
....*...*.....*******.*.*
.....*.*.........**.*.*.*
.....*.*.*...*........*.*
.....*..*.***..*.***.*.*
.........*.**.***...**.*.**
....***.......**.....*.*
.....*.........*....*...*.......*.****
.**.............*...**.*..***..*.******
**.**.*...............*...***.*..*.****
.*****....................**....***
..***
#P 67 -7
.................................**.**
.**..............................******
**.***...............*..***...*.*.*****
.****..*........*....*....*****.**
..**...........**....*......**
....*...*.....*******.*.*
.....*.*.........**.*.*.*
.....*.*.*...*........*.*
.....*..*.***..*.***.*.*
.........*.**.***...**.*.**
....***.......**.....*.*
.....*.........*....*...*.......*.****
.**.............*...**.*..***..*.******
**.**.*...............*...***.*..*.****
.*****....................**....***
..***
#P 106 -8
.........*...**
......***..**
.....****......*
.....*....**.*
....*.**.**.*
...**.*.**
.**.*...**
.**.*...*
*....*...*.*
**.*....*
.*.*..*..*
..**.*
...*.*.**
.....*.**....*
....**.***.*.*
.....**..*
.......**..***.*
.........*...*.*
#P 67 25
..............................**
.**...........................***
**.***...............*..***.....*
.****..*........*....*....********
..**...........**....*......**...*
....*...*.....*******.*.*
.....*.*.........**.*.*.*
.....*.*.*...*........*.*
.....*..*.***..*.***.*.*
.........*.**.***...**.*.**
....***.......**.....*.*
.....*.........*....*...*......**
.**.............*...**.*..***..**
**.**.*...............*...***.**.*
.*****....................**..*
..***
#P 67 48
..........................................*
..............................***.......*..*
.**...........................***......*...*
**.***...............*..***......*.*.*.*...*
.****..*........*....*....*******.****.*...*
..**...........**....*......**..*.....*.**.*
....*...*.....*******.*.*.........***......**
.....*.*.........**.*.*.*..........*.......**
.....*.*.*...*........*.*...........*.***.****
.....*..*.***..*.***.*.*...........*....**...*
.........*.**.***...**.*.**........*..****
....***.......**.....*.*..........*****..*
.....*.........*....*...*........*....****..**
.**.............*...**.*..***...**.**.*...*
**.**.*...............*...***.**..*.*.*.......*
.*****....................**..*.****...*.*
..***..........................*.*......*.**.*
................................*
#P 131 -56
................................*......*..*
..............................**.*....*
.**...........................*...**..*...*
**.***...............*..***.*.*.*.....****
.****..*........*....*....**.*..*.*..*
..**...........**....*......*.*.*...*
....*...*.....*******.*.*....**.*.....*.*
.....*.*.........**.*.*.*.......*..*.*..*
.....*.*.*...*........*.*......*......*
.....*..*.***..*.***.*.*.......*..*.....*
.........*.**.***...**.*.**...**.....**.*
....***.......**.....*.*.....*.*.**..*
.....*.........*....*...*...**.*.*.......*
.**.............*...**.*..**.*.*..*.......*
**.**.*...............*...***..*.*.**
.*****....................**...*.....*....*
..***..........................*...*..****
...............................*
#P 131 -32
................................*.........***
..............................**.*
.**...........................*...**..****...*
**.***...............*..***.*.*.*.....***
.****..*........*....*....**.*..*.*..*...**.*
..**...........**....*......*.*.*...*.....*.*
....*...*.....*******.*.*....**.*
.....*.*.........**.*.*.*.......*..*
.....*.*.*...*........*.*......*
.....*..*.***..*.***.*.*.......*..*
.........*.**.***...**.*.**...**
....***.......**.....*.*.....*.*.**
.....*.........*....*...*...**.*.*.....**..*
.**.............*...**.*..**.*.*..*..*****..*
**.**.*...............*...***..*.*.****....*
.*****....................**...*.......**
..***..........................*...*....***.**
...............................*.........**
#P 131 -8
................................*....*
..............................**.*...*
.**...........................*....*
**.***...............*..***.*.*.*.*.***.*
.****..*........*....*....**.*..*.*.**
..**...........**....*......*.*.*.....***
....*...*.....*******.*.*....**.*......*.*
.....*.*.........**.*.*.*.......*..*...***
.....*.*.*...*........*.*......*.......***...*
.....*..*.***..*.***.*.*.......*..*....**..***
.........*.**.***...**.*.**...**..........**
....***.......**.....*.*.....*.*.**...*..**
.....*.........*....*...*...**.*.*....*****
.**.............*...**.*..**.*.*..*......*
**.**.*...............*...***..*.*.*..*.*
.*****....................**...*.*.**.*
..***..........................*...**
...............................*.*
#P 131 25
...............................***......*
.**...........................*.**.**.*.*
**.***...............*..***.***.*.***....*
.****..*........*....*....**..*.*.*.***....**
..**...........**....*......*.*.*.....*...****
....*...*.....*******.*.*....**.*.......******
.....*.*.........**.*.*.*.......*..*..*
.....*.*.*...*........*.*......*.....*..*
.....*..*.***..*.***.*.*.......*..*..*....***
.........*.**.***...**.*.**...**......*.******
....***.......**.....*.*.....*.*.**.......****
.....*.........*....*...*...**.*.*....****
.**.............*...**.*..**.*.*.*
**.**.*...............*...***..*..*.**
.*****....................**..**.**...*
..***...........................***....**
.................................**
#P 131 48
...............................**...........*.*
..............................***..........*..*
.**.........................*.*...........**
**.***...............*..***..**..........*....*
.****..*........*....*....***.**..*.....*****.*
..**...........**....*......*.**.***
....*...*.....*******.*.*...*...*...**.****
.....*.*.........**.*.*.*...*****.....*
.....*.*.*...*........*.*.....*.*.....***.*
.....*..*.***..*.***.*.*......*..**...***.*
.........*.**.***...**.*.**.***.*****
....***.......**.....*.*....**..**....*****
.....*.........*....*...*....*...*
.**.............*...**.*..**..*..*...*..*****.*
**.**.*...............*...***.....**.....*....*
.*****....................**..............**
..***.........................**...........*..*
..............................**............*.*
#P 187 -56
..................................***
.
.**..............................****.*
**.***...............*....****.**
.****..*........*....*...*...****
..**...........**....*....***..*
....*...*.....*******.*.*..*
.....*.*.........**.*.*.*..*
.....*.*.*...*........*.*.*
.....*..*.***..*.***.*.*.*
.........*.**.***...**.*.*.**
....***.......**.....*.*.*
.....*.........*....*...***.**
.**.............*...**.*..*....*
**.**.*...............*....*..*.....*
.*****.....................*..*..*..**
..***............................**.**
...................................*.*
#P 187 -32
.......................................*.....***
...................................*.**.*.**.***
.**..............................**.***..***.*.*..*
**.***...............*....****.***.......*..**...*
.****..*........*....*...*...****.*******.*..*
..**...........**....*....***..*.......*.*
....*...*.....*******.*.*..*.......**.....*..*
.....*.*.........**.*.*.*..*......**.*....***
.....*.*.*...*........*.*.*.......**...**
.....*..*.***..*.***.*.*.*..........*..****
.........*.**.***...**.*.*.**......*.....**..*
....***.......**.....*.*.*........***........*
.....*.........*....*...***.**..........*....**
.**.............*...**.*..*....*..*************
**.**.*...............*....*..*...*......*...***
.*****.....................*..*...*..*..**......**
..***.............................*..**..*...*.*.*
........................................*....****
..............................................**
#P 187 -8
.................................**
.................................**...........*
.**.............................*......**.....*.**
**.***...............*....****.**..**....***.*...*
.****..*........*....*...*...****..**..*...**
..**...........**....*....***..*...*.*.**......*
....*...*.....*******.*.*..*.........*.**...*
.....*.*.........**.*.*.*..*.......*.*.*......*
.....*.*.*...*........*.*.*.......**.*.*.**...*
.....*..*.***..*.***.*.*.*........*...*....*..**
.........*.**.***...**.*.*.**......**.*.*.*...**
....***.......**.....*.*.*.........**.*......*
.....*.........*....*...***.**........*....***
.**.............*...**.*..*....*.***..*.*.*...*
**.**.*...............*....*..*..**..**.*.....*...*
.*****.....................*..*.**...*...*..***...*
..***...........................**........*.....*
..................................**
#P 187 24
...............................................*.*
..................................**..........**.*
.**..............................**.**.*.....*
**.***...............*..*.........*.**.....**.**
.****..*........*....*...*......*.*....*.*.*.*
..**...........**....*.........**.*.**..*.*.**
....*...*.....*******.*.*......*.*.*..**..**
.....*.*.........**.*.*.*..***.*.*.*..*..*.*
.....*.*.*...*........*.*...**.*.*.*...*.**
.....*..*.***..*.***.*.*....*.*.*.*....*..**
.........*.**.***...**.*.**..*..*.*.**....**
....***.......**.....*.*.....*..*.*....*.**
.....*.........*....*...*......**..*.**
.**.............*...**.*........**.*...*.*.*
**.**.*...............*..........*.***...*.****
.*****............................*....*....***
..***.............................*****..........*
...................................**..........**
#P 187 48
....................................*
..................................**.*.***.*
.**..............................**.***.*..*
**.***...............*..*.........*.*...***...**.**
.****..*........*....*...*......*.*.*.*.*.******....*
..**...........**....*.........**.*.****..**.*
....*...*.....*******.*.*......*.*.*..*.....*..*.*...*
.....*.*.........**.*.*.*..***.*.*.*..*.......*.*....*
.....*.*.*...*........*.*...**.*.*.*.***.....*.**...***
.....*..*.***..*.***.*.*....*.*.*.*.*..*......*...*...*
.........*.**.***...**.*.**..*..*.*.*.............*
....***.......**.....*.*.....*..*.*.**.....***....*
.....*.........*....*...*......**..*.**...*****...*
.**.............*...**.*........**.*.*...*.....*..*
**.**.*...............*..........*.*...*........**
.*****............................*.*.**...*
..***.............................***...****
...................................**...**

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,645 @@
#Life 1.05
#D c/2 symmetrical spaceships, "B" front end
#D By Hartmut Holzwart.
#N
#P -144 -70
.....................................**
.................**.................****
.**.............**.**..............**.**
**.***...........****...............**
.*****............**.............**
..***....*.........**.......*....**
.........*..*.....*****...**..*.*.....*
......**..***.....******.*.*.***.**
.....**........**........*.*..*..*
.....****....*.*.......*.*...**
.....*.*.*..*...***......*...**..**....*
.....*.*.*..*...***......*...**..**....*
.....****....*.*.......*.*...**
.....**........**........*.*..*..*
......**..***.....******.*.*.***.**
.........*..*.....*****...**..*.*.....*
..***....*.........**.......*....**
.*****............**.............**
**.***...........****...............**
.**.............**.**..............**.**
.................**.................****
.....................................**
#P -144 -45
.................**.......**
.**.............**.**....**.**
**.***...........****.....****......**
.*****............**.......**....***
..***....*.........*...........*
.........*..*.....****.........*
......**..***.....******...**.*
.....**........**.......*....*....***
.....****....*.*......**.*.....*.***.*
.....*.*.*..*...***...*....*.*......***
.....*.*.*..*...***...*....*.*......***
.....****....*.*......**.*.....*.***.*
.....**........**.......*....*....***
......**..***.....******...**.*
.........*..*.....****.........*
..***....*.........*...........*
.*****............**.......**....***
**.***...........****.....****......**
.**.............**.**....**.**
.................**.......**
#P -144 -21
.................**.......**.......***
.**.............**.**....**.**....*****
**.***...........****.....****...**.***
.*****............**.......**.....**
..***....*.........*...........*
.........*..*.....****.........*
......**..***.....******...**.*.....**
.....**........**.......*....*....****
.....****....*.*......**.*.....*.*....*
.....*.*.*..*...***...*....*.*....*....*
.....*.*.*..*...***...*....*.*....*....*
.....****....*.*......**.*.....*.*....*
.....**........**.......*....*....****
......**..***.....******...**.*.....**
.........*..*.....****.........*
..***....*.........*...........*
.*****............**.......**.....**
**.***...........****.....****...**.***
.**.............**.**....**.**....*****
.................**.......**.......***
#P -144 10
....................................**
.................**......*.*.......***
.**.............**.**...*.........***
**.***...........****...*..*....*.*..**
.*****............**....***.**.*.**
..***....*.........***......**.*......*
.........*..*.....*****....*...*.**..**
......**..***.....*****.....**.*.....*
.....**........**............**..**.**.*
.....****....*.*...............***.**
.....*.*.*..*...***.............*
.....*.*.*..*...***.............*
.....****....*.*...............***.**
.....**........**............**..**.**.*
......**..***.....*****.....**.*.....*
.........*..*.....*****....*...*.**..**
..***....*.........***......**.*......*
.*****............**....***.**.*.**
**.***...........****...*..*....*.*..**
.**.............**.**...*.........***
.................**......*.*.......***
....................................**
#P -144 34
.....................................**
.................**......*.*............*
.**.............**.**...*.........*
**.***...........****...*..*....*.......*
.*****............**....***.**.*.*.*****
..***....*.........***......**.*...*
.........*..*.....*****....*...*..*
......**..***.....*****.....**..*
.....**........**............**
.....****....*.*...............***
.....*.*.*..*...***...........*..*
.....*.*.*..*...***...........*..*
.....****....*.*...............***
.....**........**............**
......**..***.....*****.....**..*
.........*..*.....*****....*...*..*
..***....*.........***......**.*...*
.*****............**....***.**.*.*.*****
**.***...........****...*..*....*.......*
.**.............**.**...*.........*
.................**......*.*............*
.....................................**
#P -144 59
.................**
.**.............**.**
**.***...........****
.*****............**.......*
..***....*.........*.....***
.........*..*.....******.*.***
......**..***.....**...*.*.*.**
.....**........**...**.**.**...*
.....****....*.*.....*..*....*
.....*.*.*..*...***...***
.....*.*.*..*...***...***
.....****....*.*.....*..*....*
.....**........**...**.**.**...*
......**..***.....**...*.*.*.**
.........*..*.....******.*.***
..***....*.........*.....***
.*****............**.......*
**.***...........****
.**.............**.**
.................**
#P -88 -77
.............****
.**..........*...*
**.***.......*
.*****........*..*
..***....*.........****
.........*..*.....******
......**..***.....******
.....**........**
.....****....*.*
.....*.*.*..*...***....*
.....*.*.*..*...***....*
.....****....*.*
.....**........**
......**..***.....******
.........*..*.....******
..***....*.........****
.*****........*..*
**.***.......*
.**..........*...*
.............****
#P -88 -46
.....................................**
.............****...................****
.**..........*...*.................**.**
**.***.......*......................**
.*****........*..*...............**
..***....*.........**.......*....**
.........*..*.....*****...**..*.*.....*
......**..***.....******.*.*.***.**
.....**........**........*.*..*..*
.....****....*.*.......*.*...**
.....*.*.*..*...***......*...**..**....*
.....*.*.*..*...***......*...**..**....*
.....****....*.*.......*.*...**
.....**........**........*.*..*..*
......**..***.....******.*.*.***.**
.........*..*.....*****...**..*.*.....*
..***....*.........**.......*....**
.*****........*..*...............**
**.***.......*......................**
.**..........*...*.................**.**
.............****...................****
.....................................**
#P -88 -21
.............****......****
.**..........*...*.....*...*.....**
**.***.......*.........*........****
.*****........*..*......*...*..**.**
..***....*.........**...........**
.........*..*.....*****...**
......**..***.....******.*.*.......*
.....**........**........*.*.......*
.....****....*.*.......*.*...*****.*
.....*.*.*..*...***......*.....*..***
.....*.*.*..*...***......*.....*..***
.....****....*.*.......*.*...*****.*
.....**........**........*.*.......*
......**..***.....******.*.*.......*
.........*..*.....*****...**
..***....*.........**...........**
.*****........*..*......*...*..**.**
**.***.......*.........*........****
.**..........*...*.....*...*.....**
.............****......****
#P -88 10
........................**
.............****......****....**
.**..........*...*....**.**...****
**.***.......*.........**....**.**
.*****........*..*............**
..***....*.........*
.........*..*.....**.....**
......**..***.....****.*..*.**
.....**........**......*..**
.....****....*.*....*....*
.....*.*.*..*...***.*..*
.....*.*.*..*...***.*..*
.....****....*.*....*....*
.....**........**......*..**
......**..***.....****.*..*.**
.........*..*.....**.....**
..***....*.........*
.*****........*..*............**
**.***.......*.........**....**.**
.**..........*...*....**.**...****
.............****......****....**
........................**
#P -88 35
.............****....****
.**..........*...*...*...*
**.***.......*.......*
.*****........*..*....*....*...******
..***....*.........*..........*......*
.........*..*.....**....***..**
......**..***.....****.**.*..**......*
.....**........**......****.......**
.....****....*.*....*....*
.....*.*.*..*...***.*..*.**
.....*.*.*..*...***.*..*.**
.....****....*.*....*....*
.....**........**......****.......**
......**..***.....****.**.*..**......*
.........*..*.....**....***..**
..***....*.........*..........*......*
.*****........*..*....*....*...******
**.***.......*.......*
.**..........*...*...*...*
.............****....****
#P -88 58
......................**.*..*
.............****....*...*.*..............**
.**..........*...*...*.....*.**..........**.**
**.***.......*.......**....*.***...****...****
.*****........*..*.....*..*...**..*........**
..***....*.........*..............*.*
.........*..*.....**....***......**.*....*
......**..***.....****.**..***.**..**....**
.....**........**......**.****.....*.******
.....****....*.*....*....**..*.*****...*
.....*.*.*..*...***.*..*.**.....*.**
.....*.*.*..*...***.*..*.**.....*.**
.....****....*.*....*....**..*.*****...*
.....**........**......**.****.....*.******
......**..***.....****.**..***.**..**....**
.........*..*.....**....***......**.*....*
..***....*.........*..............*.*
.*****........*..*.....*..*...**..*........**
**.***.......*.......**....*.***...****...****
.**..........*...*...*.....*.**..........**.**
.............****....*...*.*..............**
......................**.*..*
#P -24 -70
................**
...............****
.**...........**.**
**.***.........**
.*****
..***....*..........*
.........*..*
......**..***.....**....*
.....**........*...*.****
.....****....*.*.***.***
.....*.*.*..*...****.*
.....*.*.*..*...****.*
.....****....*.*.***.***
.....**........*...*.****
......**..***.....**....*
.........*..*
..***....*..........*
.*****
**.***.........**
.**...........**.**
...............****
................**
#P -24 -46
................**.......*
...............****.....*
.**...........**.**.....*.....**
**.***.........**.......*****
.*****........................*.*
..***....*..........*........*...*
.........*..*.....................*
......**..***.....**....*..**....**
.....**........*...*.****..*..*..**.**
.....****....*.*.***.***......**
.....*.*.*..*...****.*.......*
.....*.*.*..*...****.*.......*
.....****....*.*.***.***......**
.....**........*...*.****..*..*..**.**
......**..***.....**....*..**....**
.........*..*.....................*
..***....*..........*........*...*
.*****........................*.*
**.***.........**.......*****
.**...........**.**.....*.....**
...............****.....*
................**.......*
#P -24 -22
................**.....................*..*
...............****............*..*...*
.**...........**.**...........*.......*...*
**.***.........**.............*...*...****
.*****........................****
..***....*..........*
.........*..*...........................***
......**..***.....**....*..*...*......****
.....**........*...*.****...*.*......*....*
.....****....*.*.***.***...**..*..****
.....*.*.*..*...****.*.........*.*..*
.....*.*.*..*...****.*.........*.*..*
.....****....*.*.***.***...**..*..****
.....**........*...*.****...*.*......*....*
......**..***.....**....*..*...*......****
.........*..*...........................***
..***....*..........*
.*****........................****
**.***.........**.............*...*...****
.**...........**.**...........*.......*...*
...............****............*..*...*
................**.....................*..*
#P -24 12
.**............**
**.***........**.***
.*****.........*****
..***....*......*****
.........*..*......****
......**..***.....*..***
.....**........*..**..**
.....****....*.*.*.*
.....*.*.*..*...***
.....*.*.*..*...***
.....****....*.*.*.*
.....**........*..**..**
......**..***.....*..***
.........*..*......****
..***....*......*****
.*****.........*****
**.***........**.***
.**............**
#P -24 34
.................**
................****...................*
.**............**.**................*****
**.***..........**..........**....**
.*****...............*.....*......**.**
..***....*............*....*...*.*...*
.........*..*......*****...**....**...******
......**..***.....*....**.....**.*...*......*
.....**........*..**....**.*....*.*..*
.....****....*.*.*.*....**........*..*......*
.....*.*.*..*...***.....*.................*
.....*.*.*..*...***.....*.................*
.....****....*.*.*.*....**........*..*......*
.....**........*..**....**.*....*.*..*
......**..***.....*....**.....**.*...*......*
.........*..*......*****...**....**...******
..***....*............*....*...*.*...*
.*****...............*.....*......**.**
**.***..........**..........**....**
.**............**.**................*****
................****...................*
.................**
#P -24 59
..............****
.**...........*...*
**.***........*
.*****.........*..*..**
..***....*..........**.*.**
.........*..*......*.***
......**..***.....*.***...*
.....**........*...*.....*
.....****....*.*.***
.....*.*.*..*...***
.....*.*.*..*...***
.....****....*.*.***
.....**........*...*.....*
......**..***.....*.***...*
.........*..*......*.***
..***....*..........**.*.**
.*****.........*..*..**
**.***........*
.**...........*...*
..............****
#P 32 -78
................**......****
...............****....******
.**...........**.**...**.****
**.***.........**......**
.*****........................*
..***....*..........*.........*
.........*..*
......**..***.....**
.....**........*...*.************
.....****....*.*.***.************
.....*.*.*..*...****.***********
.....*.*.*..*...****.***********
.....****....*.*.***.************
.....**........*...*.************
......**..***.....**
.........*..*
..***....*..........*.........*
.*****........................*
**.***.........**......**
.**...........**.**...**.****
...............****....******
................**......****
#P 32 -46
................**
...............****
.**...........**.**
**.***.........**
.*****
..***....*..........*
.........*..*
......**..***.....**
.....**........*...*.********
.....****....*.*.***.********
.....*.*.*..*...****.*******
.....*.*.*..*...****.*******
.....****....*.*.***.********
.....**........*...*.********
......**..***.....**
.........*..*
..***....*..........*
.*****
**.***.........**
.**...........**.**
...............****
................**
#P 32 -22
................**......**
...............****....****
.**...........**.**...**.**...***
**.***.........**......**....**.***...********
.*****........................***..*.*..******
..***....*..........*......**..**..*.*...*.**
.........*..*....................*...**
......**..***.....**..............**.*
.....**........*...*.*******......***..*
.....****....*.*.***.*******.......*.***
.....*.*.*..*...****.******.........*..**
.....*.*.*..*...****.******.........*..**
.....****....*.*.***.*******.......*.***
.....**........*...*.*******......***..*
......**..***.....**..............**.*
.........*..*....................*...**
..***....*..........*......**..**..*.*...*.**
.*****........................***..*.*..******
**.***.........**......**....**.***...********
.**...........**.**...**.**...***
...............****....****
................**......**
#P 32 2
................**......**...............*.*
...............****....****.............*
.**...........**.**...**.**...***......**...*
**.***.........**......**....**.***...*...**
.*****........................***..*.*.**..**
..***....*..........*......**..**..*.*.....**
.........*..*....................*...*.....**
......**..***.....**..............**.*...*
.....**........*...*.*******......**...**..**
.....****....*.*.***.*******........**...***
.....*.*.*..*...****.******
.....*.*.*..*...****.******
.....****....*.*.***.*******........**...***
.....**........*...*.*******......**...**..**
......**..***.....**..............**.*...*
.........*..*....................*...*.....**
..***....*..........*......**..**..*.*.....**
.*****........................***..*.*.**..**
**.***.........**......**....**.***...*...**
.**...........**.**...**.**...***......**...*
...............****....****.............*
................**......**...............*.*
#P 32 34
................**......**.........**.*
...............****....****......**......*
.**...........**.**...**.**......***.*...*
**.***.........**......**.....**..**..**.*
.*****.......................*..*.**
..***....*..........*.......**....**
.........*..*................*..*.**
......**..***.....**..........**..*
.....**........*...*.******......***.**.*
.....****....*.*.***.******......***.**.*
.....*.*.*..*...****.*****
.....*.*.*..*...****.*****
.....****....*.*.***.******......***.**.*
.....**........*...*.******......***.**.*
......**..***.....**..........**..*
.........*..*................*..*.**
..***....*..........*.......**....**
.*****.......................*..*.**
**.***.........**......**.....**..**..**.*
.**...........**.**...**.**......***.*...*
...............****....****......**......*
................**......**.........**.*
#P 32 58
................**......**.........**.*
...............****....****......**......*.**
.**...........**.**...**.**......***.*...*...*
**.***.........**......**.....**..**..**.*
.*****.......................*..*.**.......*
..***....*..........*.......**....**
.........*..*................*..*.**....**
......**..***.....**..........**..*....**.**
.....**........*...*.******......***....****
.....****....*.*.***.******......***.....**
.....*.*.*..*...****.*****
.....*.*.*..*...****.*****
.....****....*.*.***.******......***.....**
.....**........*...*.******......***....****
......**..***.....**..........**..*....**.**
.........*..*................*..*.**....**
..***....*..........*.......**....**
.*****.......................*..*.**.......*
**.***.........**......**.....**..**..**.*
.**...........**.**...**.**......***.*...*...*
...............****....****......**......*.**
................**......**.........**.*
#P 96 -76
.**...............***
**.***...........**.***
.*****.........*..*.*****
..***....*....***.**....**
.........*..**...**.....*
......**..*****.*.....*
.....**...............***.**
.....****....*.**.*....***.*
.....*.*.*..*.*
.....*.*.*..*.*
.....****....*.**.*....***.*
.....**...............***.**
......**..*****.*.....*
.........*..**...**.....*
..***....*....***.**....**
.*****.........*..*.*****
**.***...........**.***
.**...............***
#P 96 -46
....................**
...................****.......*
.**...............**.**......**
**.***.............**.......**.**
.*****.......................*****
..***....*.............*.........*
.........*..***..*.....*.*
......**..******..*...*...*.*..*
.....**.............***..*..*
.....****....*..***.*****....**
.....*.*.*..*.**....*.........*
.....*.*.*..*.**....*.........*
.....****....*..***.*****....**
.....**.............***..*..*
......**..******..*...*...*.*..*
.........*..***..*.....*.*
..***....*.............*.........*
.*****.......................*****
**.***.............**.......**.**
.**...............**.**......**
...................****.......*
....................**
#P 96 -22
........................................**
.......................................***
.**.........................*........**.***
**.***.....................*.**....**.*
.*****...................**....*.**...**..*
..***....*..............*......*.**.***
.........*..***..*......*.......****
......**..******..*...**...*.*.**.*
.....**.............**.**.****...**
.....****....*..***.**.*..*...**.*.**
.....*.*.*..*.**....*..*..*....*.*
.....*.*.*..*.**....*..*..*....*.*
.....****....*..***.**.*..*...**.*.**
.....**.............**.**.****...**
......**..******..*...**...*.*.**.*
.........*..***..*......*.......****
..***....*..............*......*.**.***
.*****...................**....*.**...**..*
**.***.....................*.**....**.*
.**.........................*........**.***
.......................................***
........................................**
#P 96 4
.**.........................*
**.***.....................*.**
.*****...................**....*.**
..***....*..............*......*.*.....**
.........*..***..*......*.......***....**
......**..******..*...**...*.*.***.***.***...*
.....**.............**.**.****....*......**.*
.....****....*..***.**.*..*...*****.....***..*
.....*.*.*..*.**....*..*..*......*...******
.....*.*.*..*.**....*..*..*......*...******
.....****....*..***.**.*..*...*****.....***..*
.....**.............**.**.****....*......**.*
......**..******..*...**...*.*.***.***.***...*
.........*..***..*......*.......***....**
..***....*..............*......*.*.....**
.*****...................**....*.**
**.***.....................*.**
.**.........................*
#P 96 58
................*
.............****.......**..........**
.**.........**.....******..........*
**.***.....**..*****....*.*..*.....*....*
.*****......*.*........*...*.***...**...*
..***....*....**...***....*.****.....**.*
.........*.........****..**...****
......**..**...*......*..****...*.*
.....**.....*....*...*.*.*.*.*.**.*.*.*
.....****...*..*.*..**.**..**...*....*
.....*.*.*.**.*...**.*.....*..*..**
.....*.*.*.**.*...**.*.....*..*..**
.....****...*..*.*..**.**..**...*....*
.....**.....*....*...*.*.*.*.*.**.*.*.*
......**..**...*......*..****...*.*
.........*.........****..**...****
..***....*....**...***....*.****.....**.*
.*****......*.*........*...*.***...**...*
**.***.....**..*****....*.*..*.....*....*
.**.........**.....******..........*
.............****.......**..........**
................*

View File

@ -0,0 +1,805 @@
#Life 1.05
#D c/2 symmetrical spaceships, hammerhead front end
#D By Hartmut Holzwart.
#N
#P -120 -108
................*
.**...........*...*
**.***.......*
.*****.......*....*
..*****.....*.****
......***.*.**
......***....*
......***.***
..........**
..........**
......***.***
......***....*
......***.*.**
..*****.....*.****
.*****.......*....*
**.***.......*
.**...........*...*
................*
#P -120 -86
.........................................**
........................................****
.......................................**.**
.**...........*........**....*...*......**
**.***.......*.....*..**.....**
.*****.......*.....***.**......****..*
..*****.....*.****.*.*.**.**..*.*.*......**
......***.*.**.......*....**.***...*..*.**.*
......***....*......**.*...*.***....**..**.*
......***.***.........**.....*........***
..........**..........***..............**
..........**..........***..............**
......***.***.........**.....*........***
......***....*......**.*...*.***....**..**.*
......***.*.**.......*....**.***...*..*.**.*
..*****.....*.****.*.*.**.**..*.*.*......**
.*****.......*.....***.**......****..*
**.***.......*.....*..**.....**
.**...........*........**....*...*......**
.......................................**.**
........................................****
.........................................**
#P -120 -62
.........................................**
........................................****
.......................................**.**
.**...........*........**....*...*......**
**.***.......*.....*..**.....**
.*****.......*.....***.**......****..*
..*****.....*.****.*.*.**.**..*.*.*......**
......***.*.**.......*....**.***...*..*.**.****
......***....*......**.*...*.***....**..**.****
......***.***.........**.....*........***...**
..........**..........***..............**
..........**..........***..............**
......***.***.........**.....*........***...**
......***....*......**.*...*.***....**..**.****
......***.*.**.......*....**.***...*..*.**.****
..*****.....*.****.*.*.**.**..*.*.*......**
.*****.......*.....***.**......****..*
**.***.......*.....*..**.....**
.**...........*........**....*...*......**
.......................................**.**
........................................****
.........................................**
#P -120 11
........................***
.
.**...................**.**.*
**.***............*.**...****
.*****.....**...**..***....***
..*****....**...*
......***.*.**.***
......***.*........****************
......***.**..**...****************
....................**************
....................**************
......***.**..**...****************
......***.*........****************
......***.*.**.***
..*****....**...*
.*****.....**...**..***....***
**.***............*.**...****
.**...................**.**.*
.
........................***
#P -120 34
................................**.*
........................***....*..****
...............................*..*.**
.**...................**.**.*..**...**.**
**.***............*.**...****....*
.*****.....**...**..***....***
..*****....**...*
......***.*.**.***
......***.*........***********************
......***.**..**...***********************
....................*********************
....................*********************
......***.**..**...***********************
......***.*........***********************
......***.*.**.***
..*****....**...*
.*****.....**...**..***....***
**.***............*.**...****....*
.**...................**.**.*..**...**.**
...............................*..*.**
........................***....*..****
................................**.*
#P -120 58
......................................**
........................***..........****
....................................**.**
.**...................**.**.*........**
**.***............*.**...****...**........*
.*****.....**...**..***....***.***........*
..*****....**...*
......***.*.**.***
......***.*........**************************
......***.**..**...**************************
....................************************
....................************************
......***.**..**...**************************
......***.*........**************************
......***.*.**.***
..*****....**...*
.*****.....**...**..***....***.***........*
**.***............*.**...****...**........*
.**...................**.**.*........**
....................................**.**
........................***..........****
......................................**
#P -120 90
.....................................*
...................................****
..................................*
.**....................****.....*.*..*.***
**.***............*...*....**.*.*.*.*.*...*
.*****.....**...**.*.**......**.*..**.....*
..*****....**...*...***....**.*.*....*
......***.*.**.**.*.**..............**..*.*
......***.*......*..*..*.******......**.*.*
......***.**..**...***...*****........*.**
.....................*.**....*.........**
.....................*.**....*.........**
......***.**..**...***...*****........*.**
......***.*......*..*..*.******......**.*.*
......***.*.**.**.*.**..............**..*.*
..*****....**...*...***....**.*.*....*
.*****.....**...**.*.**......**.*..**.....*
**.***............*...*....**.*.*.*.*.*...*
.**....................****.....*.*..*.***
..................................*
...................................****
.....................................*
#P -64 -109
.................*.*
................**.**..*
.**...........*****.**...*
**.***.......*...........*.*
.*****.......*..*...*..*..*
..*****.....*.****...*
......***.*.**...*
......***....*
......***.***
..........**
..........**
......***.***
......***....*
......***.*.**...*
..*****.....*.****...*
.*****.......*..*...*..*..*
**.***.......*...........*.*
.**...........*****.**...*
................**.**..*
.................*.*
#P -64 -86
..................................**.....**
.................*.*.............*
................**.**..*........**..*.***
.**...........*****.**...*.....*
**.***.......*...........*.**.****.*.****..*
.*****.......*..*...*..*..***....*.*..*...*
..*****.....*.****...*.......*.*.......*
......***.*.**...*...........**........*.*
......***....*.................*........*
......***.***
..........**
..........**
......***.***
......***....*.................*........*
......***.*.**...*...........**........*.*
..*****.....*.****...*.......*.*.......*
.*****.......*..*...*..*..***....*.*..*...*
**.***.......*...........*.**.****.*.****..*
.**...........*****.**...*.....*
................**.**..*........**..*.***
.................*.*.............*
..................................**.....**
#P -64 -62
..................................**.....*
.................*.*.............*......**
................**.**..*........**..*...*
.**...........*****.**...*.....*...***..*
**.***.......*...........*.**.******...**
.*****.......*..*...*..*..***....*...*...*
..*****.....*.****...*.......*.*......**.*
......***.*.**...*...........**........*
......***....*.................*
......***.***
..........**
..........**
......***.***
......***....*.................*
......***.*.**...*...........**........*
..*****.....*.****...*.......*.*......**.*
.*****.......*..*...*..*..***....*...*...*
**.***.......*...........*.**.******...**
.**...........*****.**...*.....*...***..*
................**.**..*........**..*...*
.................*.*.............*......**
..................................**.....*
#P -64 -21
.................*.*......*
................**.**..*.*.*
.**...........*****.**...*
**.***.......*
.*****.......*..*...*..*
..*****.....*.****...*
......***.*.**...*
......***....*
......***.***
..........**
..........**
......***.***
......***....*
......***.*.**...*
..*****.....*.****...*
.*****.......*..*...*..*
**.***.......*
.**...........*****.**...*
................**.**..*.*.*
.................*.*......*
#P -64 3
.................*.*......*.*
................**.**..*.*..*......*
.**...........*****.**...*......**.*
**.***.......*.............*....*
.*****.......*..*...*..*...*....*
..*****.....*.****...*.....**.*
......***.*.**...*............*..*
......***....*.................*.*
......***.***
..........**
..........**
......***.***
......***....*.................*.*
......***.*.**...*............*..*
..*****.....*.****...*.....**.*
.*****.......*..*...*..*...*....*
**.***.......*.............*....*
.**...........*****.**...*......**.*
................**.**..*.*..*......*
.................*.*......*.*
#P -64 42
..........................*..*
.................*.*.....*...**
................**.**..*.*...*
.**...........*****.**...**.*
**.***.......*...........*...*
.*****.......*..*...*..*.*...**
..*****.....*.****...*....*..*
......***.*.**...*
......***....*
......***.***
..........**
..........**
......***.***
......***....*
......***.*.**...*
..*****.....*.****...*....*..*
.*****.......*..*...*..*.*...**
**.***.......*...........*...*
.**...........*****.**...**.*
................**.**..*.*...*
.................*.*.....*...**
..........................*..*
#P -64 66
..........................*..*
.................*.*.....*...**
................**.**..*.*...*
.**...........*****.**...**.*
**.***.......*...........*...*
.*****.......*..*...*..*.*...**
..*****.....*.****...*....*..*
......***.*.**...*
......***....*
......***.***
..........**
..........**
......***.***
......***....*
......***.*.**...*
..*****.....*.****...*....*..*
.*****.......*..*...*..*.*...**
**.***.......*...........*...*
.**...........*****.**...**.*
................**.**..*.*...*
.................*.*.....*...**
..........................*..*
#P -32 69
.**
*
.**
#P -32 82
.**
*
.**
#P -64 90
..........................*..*
.................*.*.....*...**.....**
................**.**..*.*...*.....**.**
.**...........*****.**...**.*.......****
**.***.......*...........*...*.......**
.*****.......*..*...*..*.*...*
..*****.....*.****...*....*..*.....*
......***.*.**...*............**...**
......***....*..................*****
......***.***....................*
..........**
..........**
......***.***....................*
......***....*..................*****
......***.*.**...*............**...**
..*****.....*.****...*....*..*.....*
.*****.......*..*...*..*.*...*
**.***.......*...........*...*.......**
.**...........*****.**...**.*.......****
................**.**..*.*...*.....**.**
.................*.*.....*...**.....**
..........................*..*
#P -15 -109
.................*.*......*.*
................**.**..*.*..*
.**...........*****.**...*
**.***.......*.............*....*
.*****.......*..*...*..*..*...**.*.**
..*****.....*.****...*.....*..**...****
......***.*.**...*.........*.*...*....*
......***....*.................**
......***.***.............***..*
..........**..............**...**
..........**..............**...**
......***.***.............***..*
......***....*.................**
......***.*.**...*.........*.*...*....*
..*****.....*.****...*.....*..**...****
.*****.......*..*...*..*..*...**.*.**
**.***.......*.............*....*
.**...........*****.**...*
................**.**..*.*..*
.................*.*......*.*
#P -15 -85
.................*.*......*.*
................**.**..*.*..*.........*
.**...........*****.**...*.........****
**.***.......*.............*....*..**
.*****.......*..*...*..*..*...**.*
..*****.....*.****...*.....*..**
......***.*.**...*.........*.*...*
......***....*.................**
......***.***.............***..*
..........**..............**...**
..........**..............**...**
......***.***.............***..*
......***....*.................**
......***.*.**...*.........*.*...*
..*****.....*.****...*.....*..**
.*****.......*..*...*..*..*...**.*
**.***.......*.............*....*..**
.**...........*****.**...*.........****
................**.**..*.*..*.........*
.................*.*......*.*
#P -15 -61
.................*.*......*.*...............*
................**.**..*.*..*.........*.*.**
.**...........*****.**...*.........****.*.*.*
**.***.......*.............*....*..**..*
.*****.......*..*...*..*..*...**.*.....***
..*****.....*.****...*.....*..**.......*
......***.*.**...*.........*.*...*.....*.*
......***....*.................**
......***.***.............***..*......***
..........**..............**...**.....**
..........**..............**...**.....**
......***.***.............***..*......***
......***....*.................**
......***.*.**...*.........*.*...*.....*.*
..*****.....*.****...*.....*..**.......*
.*****.......*..*...*..*..*...**.*.....***
**.***.......*.............*....*..**..*
.**...........*****.**...*.........****.*.*.*
................**.**..*.*..*.........*.*.**
.................*.*......*.*...............*
#P -15 -38
........................................*
.................*.*......*.*........**.*.*
................**.**..*.*..*........*...*
.**...........*****.**...*...........*
**.***.......*.............*....*......*
.*****.......*..*...*..*..*...**.*..***
..*****.....*.****...*.....*..**
......***.*.**...*.........*.*...*.**
......***....*.................**.....*
......***.***.............***..*....***
..........**..............**...**...**
..........**..............**...**...**
......***.***.............***..*....***
......***....*.................**.....*
......***.*.**...*.........*.*...*.**
..*****.....*.****...*.....*..**
.*****.......*..*...*..*..*...**.*..***
**.***.......*.............*....*......*
.**...........*****.**...*...........*
................**.**..*.*..*........*...*
.................*.*......*.*........**.*.*
........................................*
#P -16 -5
.................*.*......*.*
................**.**..*.*..*....*
.**...........*****.**...*.....**.*
**.***.......*.............*...**...*
.*****.......*..*...*..*..*..*...**.*
..*****.....*.****...*.....*..***.**
......***.*.**...*.........*.*....*
......***....*.................**
......***.***.............***..*
..........**..............**...**
..........**..............**...**
......***.***.............***..*
......***....*.................**
......***.*.**...*.........*.*....*
..*****.....*.****...*.....*..***.**
.*****.......*..*...*..*..*..*...**.*
**.***.......*.............*...**...*
.**...........*****.**...*.....**.*
................**.**..*.*..*....*
.................*.*......*.*
#P -16 19
.................*.*......*.*
................**.**..*.*..*....*
.**...........*****.**...*.....**.*
**.***.......*.............*...**...*
.*****.......*..*...*..*..*..*...**.*
..*****.....*.****...*.....*..***.**
......***.*.**...*.........*.*....*
......***....*.................**
......***.***.............***..*
..........**..............**...**
..........**..............**...**
......***.***.............***..*
......***....*.................**
......***.*.**...*.........*.*....*
..*****.....*.****...*.....*..***.**
.*****.......*..*...*..*..*..*...**.*
**.***.......*.............*...**...*
.**...........*****.**...*.....**.*
................**.**..*.*..*....*
.................*.*......*.*
#P 22 23
*
*
**
.***
...*
.
.
...*
.***
**
*
*
#P -16 42
....................................*
.................*.*......*.*....****
................**.**..*.*..*....***
.**...........*****.**...*.....*...*
**.***.......*.............*...***
.*****.......*..*...*..*..*..*.....*
..*****.....*.****...*.....*..*****
......***.*.**...*.........*.*
......***....*.................**
......***.***.............***..*
..........**..............**...**
..........**..............**...**
......***.***.............***..*
......***....*.................**
......***.*.**...*.........*.*
..*****.....*.****...*.....*..*****
.*****.......*..*...*..*..*..*.....*
**.***.......*.............*...***
.**...........*****.**...*.....*...*
................**.**..*.*..*....***
.................*.*......*.*....****
....................................*
#P -16 66
.............................................*
.................*.*......*.*........*....****
................**.**..*.*..*.....****....**
.**...........*****.**...*.....****.*...*...**
**.***.......*.............*...**...*...****.*
.*****.......*..*...*..*..*..*...**.*.*
..*****.....*.****...*.....*..***.*....******
......***.*.**...*.........*.*....*....*.....*
......***....*.................**........***
......***.***.............***..*.........**
..........**..............**...**..........*
..........**..............**...**..........*
......***.***.............***..*.........**
......***....*.................**........***
......***.*.**...*.........*.*....*....*.....*
..*****.....*.****...*.....*..***.*....******
.*****.......*..*...*..*..*..*...**.*.*
**.***.......*.............*...**...*...****.*
.**...........*****.**...*.....****.*...*...**
................**.**..*.*..*.....****....**
.................*.*......*.*........*....****
.............................................*
#P -16 91
.................*.*......*.*
................**.**..*.*..*.....*
.**...........*****.**...*.....****
**.***.......*.............*...**
.*****.......*..*...*..*..*..*...**
..*****.....*.****...*.....*..***.*
......***.*.**...*.........*.*
......***....*.................***
......***.***.............***..*..*
..........**..............**...**
..........**..............**...**
......***.***.............***..*..*
......***....*.................***
......***.*.**...*.........*.*
..*****.....*.****...*.....*..***.*
.*****.......*..*...*..*..*..*...**
**.***.......*.............*...**
.**...........*****.**...*.....****
................**.**..*.*..*.....*
.................*.*......*.*
#P 40 -77
.......................****
......................******
.**..................**.****
**.***.........*.**...**
.*****.......***.**
..*****.....*....*
......***.*.*.**.........**
......***...*.*.*.....**
......***.**..**....****
..........**...*..*.*
..........**...*..*.*
......***.**..**....****
......***...*.*.*.....**
......***.*.*.**.........**
..*****.....*....*
.*****.......***.**
**.***.........*.**...**
.**..................**.****
......................******
.......................****
#P 40 -53
......................*..*
.....................*
.**..................*...*
**.***.........*.**..****
.*****.......***.**
..*****.....*....*.......***
......***.*.*.**.........***
......***...*.*.*.....**.**
......***.**..**....****
..........**...*..*.*
..........**...*..*.*
......***.**..**....****
......***...*.*.*.....**.**
......***.*.*.**.........***
..*****.....*....*.......***
.*****.......***.**
**.***.........*.**..****
.**..................*...*
.....................*
......................*..*
#P 40 -20
......................**....*
.**..................**.***...*.....*
**.***.........*.**...*****.**....*..*
.*****.......***.**....***.**....*...*
..*****.....*....*..............**...*
......***.*.*.**.........**.*.**.*...*
......***...*.*.*.....**.**..*.*.*.***.*
......***.**..**....****....**....***..*
..........**...*..*.*....*
..........**...*..*.*....*
......***.**..**....****....**....***..*
......***...*.*.*.....**.**..*.*.*.***.*
......***.*.*.**.........**.*.**.*...*
..*****.....*....*..............**...*
.*****.......***.**....***.**....*...*
**.***.........*.**...*****.**....*..*
.**..................**.***...*.....*
......................**....*
#P 40 4
......................**....*
.**..................**.***...*.....*
**.***.........*.**...*****.**....*..*
.*****.......***.**....***.**....*...*
..*****.....*....*..............**...*
......***.*.*.**.........**.*.**.*...*
......***...*.*.*.....**.**..*.*.*.***.*
......***.**..**....****....**....***..*
..........**...*..*.*....*
..........**...*..*.*....*
......***.**..**....****....**....***..*
......***...*.*.*.....**.**..*.*.*.***.*
......***.*.*.**.........**.*.**.*...*
..*****.....*....*..............**...*
.*****.......***.**....***.**....*...*
**.***.........*.**...*****.**....*..*
.**..................**.***...*.....*
......................**....*
#P 80 4
..****
.*....*
**
**....*
#P 80 18
**....*
**
.*....*
..****
#P 40 28
......................**....*.............**
.**..................**.***...*.....*....**.***
**.***.........*.**...*****.**....*..*....*****
.*****.......***.**....***.**....*...*.....***
..*****.....*....*..............**...*
......***.*.*.**.........**.*.**.*...*..***
......***...*.*.*.....**.**..*.*.*.***.*.**
......***.**..**....****....**....***
..........**...*..*.*....*
..........**...*..*.*....*
......***.**..**....****....**....***
......***...*.*.*.....**.**..*.*.*.***.*.**
......***.*.*.**.........**.*.**.*...*..***
..*****.....*....*..............**...*
.*****.......***.**....***.**....*...*.....***
**.***.........*.**...*****.**....*..*....*****
.**..................**.***...*.....*....**.***
......................**....*.............**
#P 40 60
......................**....*......**.*
.**..................**.***...*...*..****
**.***.........*.**...*****.**....*..*.**
.*****.......***.**....***.**.....**...**.**
..*****.....*....*.................*
......***.*.*.**.........**.*.***..*
......***...*.*.*.....**.**..*......*
......***.**..**....****....**...*..**
..........**...*..*.*....*........*..*
..........**...*..*.*....*........*..*
......***.**..**....****....**...*..**
......***...*.*.*.....**.**..*......*
......***.*.*.**.........**.*.***..*
..*****.....*....*.................*
.*****.......***.**....***.**.....**...**.**
**.***.........*.**...*****.**....*..*.**
.**..................**.***...*...*..****
......................**....*......**.*
#P 96 -53
..........................**
..................***.***.***
.**...............****.**.**
**.***.........*.*.....*****
.*****.......***.*...*...*
..*****.....*....*...**
......***.*.*.**....*........**
......***...*.*.*........**.....*.***..*
......***.**..**....**.**.*.*...*..**
..........**...*..*..**.*..***.*...**
..........**...*..*..**.*..***.*...**
......***.**..**....**.**.*.*...*..**
......***...*.*.*........**.....*.***..*
......***.*.*.**....*........**
..*****.....*....*...**
.*****.......***.*...*...*
**.***.........*.*.....*****
.**...............****.**.**
..................***.***.***
..........................**
#P 96 -29
..........................**
..................***.***.***
.**...............****.**.**
**.***.........*.*.....*****
.*****.......***.*...*...*
..*****.....*....*...**
......***.*.*.**....*........**
......***...*.*.*........**.....*.***
......***.**..**....**.**.*.*...*..**
..........**...*..*..**.*..***.*...**
..........**...*..*..**.*..***.*...**
......***.**..**....**.**.*.*...*..**
......***...*.*.*........**.....*.***
......***.*.*.**....*........**
..*****.....*....*...**
.*****.......***.*...*...*
**.***.........*.*.....*****
.**...............****.**.**
..................***.***.***
..........................**
#P 135 -28
****
*...*
*
.*..*
.....*
*..*.**
**.....*
.*****
.**
.**
.*****
**.....*
*..*.**
.....*
.*..*
*
*...*
****
#P 96 -5
..........................**.....**
..................***.***.***...**.**
.**...............****.**.**.....****
**.***.........*.*.....*****......**
.*****.......***.*...*...*
..*****.....*....*...**
......***.*.*.**....*........**
......***...*.*.*........**.....*.***
......***.**..**....**.**.*.*...*..**
..........**...*..*..**.*..***.*...**
..........**...*..*..**.*..***.*...**
......***.**..**....**.**.*.*...*..**
......***...*.*.*........**.....*.***
......***.*.*.**....*........**
..*****.....*....*...**
.*****.......***.*...*...*
**.***.........*.*.....*****......**
.**...............****.**.**.....****
..................***.***.***...**.**
..........................**.....**
#P 135 -5
..*
.*
**
.***
..*.**
...*
***.**
***
......*
.**
.**
......*
***
***.**
...*
..*.**
.***
**
.*
..*
#P 96 27
..........................**
..................***.***.***.....*..*
.**...............****.**.**.....*
**.***.........*.*.....*****.....*...*
.*****.......***.*...*...*.......****
..*****.....*....*...**
......***.*.*.**....*........**......**.*
......***...*.*.*........**.....*.**.....*
......***.**..**....**.**.*.*...*.**.**
..........**...*..*..**.*..***.*.....**.*
..........**...*..*..**.*..***.*.....**.*
......***.**..**....**.**.*.*...*.**.**
......***...*.*.*........**.....*.**.....*
......***.*.*.**....*........**......**.*
..*****.....*....*...**
.*****.......***.*...*...*.......****
**.***.........*.*.....*****.....*...*
.**...............****.**.**.....*
..................***.***.***.....*..*
..........................**

View File

@ -0,0 +1,406 @@
#Life 1.05
#D c/3 spaceship extensible in 2 dimensions
#D Hartmut Holzwart, David Bell
#N
#P -32 -50
...*
..*.*
.**
..*
.*.*
.*
*
*.*
*.*
.****
...*.*
...*.*
..*
..***
*
***
.***.*
...*
...*
...**
#P -29 -29
**
*..*
*.**
.***
.**
...*
.**
..*.*
...*
.
...*
..*.*
.**
...*
.**
.***
*.**
*..*
**
.
**
*..*
*.**
.***
.**
...*
.**
..*.*
...*
.
...*
..*.*
.**
...*
.**
.***
*.**
*..*
**
.
**
*..*
*.**
.***
.**
...*
.**
..*.*
...*
.
...*
..*.*
.**
...*
.**
.***
*.**
*..*
**
#P -32 31
...**
...*
...*
.***.*
***
*
..***
..*
...*.*
...*.*
.****
*.*
*.*
*
.*
.*.*
..*
.**
..*.*
...*
#P -24 -29
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
#P -12 -29
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
#P 0 -29
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
#P 12 -29
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
#P 24 -29
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*
.
..**.*.*.*
.*...*..**
*.....*
.*......*.*
...**..**.*
..*...*
..*.***...*
..*
...********
.
...********
..*
..*.***...*
..*...*
...**..**.*
.*......*.*
*.....*
.*...*..**
..**.*.*.*

View File

@ -0,0 +1,334 @@
#Life 1.05
#D c/2 spaceship extensible in 2 dimensions
#D Hartmut Holzwart
#N
#P -20 -52
............*.*
...........*..*
..........**
.........*....*
........*****.*
.....**
....*...***
...*...*
...*.....*
...***...*
.........**.*
...***......*
..*
.*...*
*..*
*....*
*****
.
*****
*....*
*..*
.*...*
..*
...***
#P -19 -27
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
.
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
.
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
.
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
.
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
.
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
.
..***
.*.....*
*...**.*
*...*
*...**.*
.*.....*
..***
#P -20 29
...***
..*
.*...*
*..*
*....*
*****
.
*****
*....*
*..*
.*...*
..*
...***......*
.........**.*
...***...*
...*.....*
...*...*
....*...***
.....**
........*****.*
.........*....*
..........**
...........*..*
............*.*
#P -10 -27
.........*
......**.*
......*
......*
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......*
......*
......**.*
.........*
#P 0 -27
.........*
......**.*
......*
......*
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......*
......*
......**.*
.........*
#P 10 -27
.........*
......**.*
......*
......*
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......*
......*
......**.*
.........*
#P 20 -27
.........*
......**.*
......*
......*
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......**
....*
.**.*
.*
*..*..*
**..**
*.......*
*..*.**.*
*...*
*..*.**.*
*.......*
**..**
*..*..*
.*
.**.*
....*
......*
......*
......**.*
.........*

View File

@ -0,0 +1,14 @@
#Life 1.05
#D B-heptomino
#D A somewhat vigorous, commonly seen bit of
#D fluff, which lends to Life's growth
#D tendencies. This piece is used in PUFTRAIN,
#D RAKE, RAKE2, RAKE3, BHEPTPUF, GUN46, TRACK,
#D GUNSTAR, GUNSTAR2, GUNSTAR3, BI-GUN, and the
#D p46, p54, and p100 shuttles in OSCSPN2 and
#D OSCSPN3, and in many other patterns.
#N
#P -1 -1
.*
***
*.**

View File

@ -0,0 +1,225 @@
#Life 1.05
#D B-heptomino puffer (well known)
#D An extension of PUFTRAIN, but at these
#D lengths, the ends need to be hit by
#D rakes. Even with the rakes, there are
#D only a finite number of lengths that
#D don't eventually self-destruct. For a
#D stable dirty puffer, see LINEPUF.
#N
#P 8 -53
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
#P 8 2
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
.
*
**
.**
**
.
.
.
**
.**
**
*
#P 32 -73
*..*
....*
*...*
.****
.
.
.
*
.**
..*
..*
.*
.
.
*..*
....*
*...*
.****
#P 24 -67
.....**
.
...**
..**
.**
..*...*
.......*
.
.**
****
**.**
..**
#P 15 -74
.****
*...*
....*
*..*
#P 11 -69
.***
.
*..*
*.*
#P 8 -59
..**
**.**
****
.**
#P 5 -65
.*
..*
***
#P 0 -60
.*
..*
***
#P 32 56
.****
*...*
....*
*..*
.
.
.*
..*
..*
.**
*
.
.
.
.****
*...*
....*
*..*
#P 24 56
..**
**.**
****
.**
.
.......*
..*...*
.**
..**
...**
.
.....**
#P 15 71
*..*
....*
*...*
.****
#P 11 66
*.*
*..*
.
.***
#P 5 63
***
..*
.*
#P 0 58
***
..*
.*
#P 8 56
.**
****
**.**
..**

View File

@ -0,0 +1,30 @@
#Life 1.05
#D Two-barrelled p46 glider gun
#D found by Bill Gosper.
#N
#P -9 -7
***
..*
..*
.*
.
.*
..*
..*
***
#P 6 -3
***
*
*
.*
.
.*
*
*
***
#P 23 -3
**
.*
#P -25 0
*
**

View File

@ -0,0 +1,65 @@
#Life 1.05
#D Programmable rake
#D Based on Tim Coe's rakes.
#N
#P -29 9
....**
****.**
.*****
..***
.
.
..****
.*...*
.....*
....*
#P -37 2
.******
*.....*
......*
.....*
#P -42 17
....*
.....*
*....*
.*****
#P -85 -6
.**
****
**.**
..**
#P -109 -4
....**
..**.**
..****
...**
...*
.*...*
*.....*
*.....*
.******
#P -116 9
....**
****.**
******
.****
#P -121 -8
.***
*****
***.**
...**
#P 0 -4
**
**
#P 16 -4
**
**
#P 48 -4
**
**
#P 64 -4
**
**
#P 96 -4
**
**

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,359 @@
#Life 1.05
#D Smallest Breeder ever created.
#D This is still larger than MAX, but
#D only fills half a quadrant (1/8 of
#D all space) with gliders.
#D By Dean Hickerson
#N
#P 44 -23
.****
*...*
....*
...*
.
.
.*
..*
..*
.**
*
.
.
.
.****
*...*
....*
...*
#P 36 -9
..**
**.**
****
.**
#P 27 -26
...*
....*
*...*
.****
#P 35 -18
**
*
#P 28 -16
..*
.***
**
....**
#P 19 -18
..*
*.*
.**
#P 14 -13
..*
*.*
.**
#P 46 7
...*
....*
*...*
.****
.
.
.
*
.**
..*
..*
.*
.
.
...*
....*
*...*
.****
#P 38 7
.**
****
**.**
..**
#P 37 18
*
**
#P 30 14
....**
**
.***
..*
#P 29 24
.****
*...*
....*
...*
#P 21 17
.**
*.*
..*
#P 16 12
.**
*.*
..*
#P 22 -11
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 14 -7
**..***
**..*.*
**..***
#P 8 -6
*
*
*
#P 24 2
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 16 6
**..***
**..*.*
**..***
#P 10 5
*
*
*
#P 12 -41
...**
.**.**
.****
..**
.
.
.*
.**
*.**
*.*
**
.
.
.
...**
.**.**
.****
..**
#P 4 -42
...*
....*
*...*
.****
#P 7 -33
**
*
#P -5 -25
..**
**.**
****
.**
#P -3 -14
.*****
*....*
.....*
....*
#P -1 12
....*
.....*
*....*
.*****
#P -3 23
.**
****
**.**
..**
#P 14 25
..**
.****
.**.**
...**
.
.
.
**
*.*
*.**
.**
.*
.
.
..**
.****
.**.**
...**
#P 9 33
*
**
#P 6 40
.****
*...*
....*
...*
#P -12 -21
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P -18 -17
.*.*
*..**
.*.*
#P -10 12
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P -16 16
.*.*
*..**
.*.*
#P -10 -62
..**
.****
.**.**
...**
.
.
.
**
*.*
*.**
.**
.*
.
.
..**
.****
.**.**
...**
#P -15 -54
**
*
#P -18 -47
.****
*...*
....*
...*
#P -26 -63
..**
**.**
****
.**
#P -32 -58
*
.**
**
#P -25 -46
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P -33 -42
.*..***
**..*.*
.*..***
#P -35 -34
.****
*...*
....*
...*
#P -51 -49
...**
***.**
*****
.***
#P -5 46
.****
*...*
....*
...*
#P -7 54
***..**
..*.**
.*....*
#P -5 60
.****
*...*
....*
...*
#P -22 61
...*
....*
*...*
.****
#P -29 56
***
..*
.*
#P -13 46
..**
**.**
****
.**
#P -20 38
..**
**.**
****
.**
.
.**
****
**.**
..**
#P -25 40
.*
..*
*..*
..*
.*
#P -33 32
...*
....*
*...*
.****
#P -47 47
.***
*****
***.**
...**

View File

@ -0,0 +1,358 @@
#Life 1.05
#D Backward-shooting Breeder.
#D Just a slight modification
#D of Breeder2.
#D By Dean Hickerson
#N
#P 43 -24
.****
*...*
....*
...*
.
.
.*
..*
..*
.**
*
.
.
.
.****
*...*
....*
...*
#P 35 -10
..**
**.**
****
.**
#P 34 -19
**
*
#P 27 -17
..*
.***
**
....**
#P 26 -27
...*
....*
*...*
.****
#P 18 -19
..*
*.*
.**
#P 13 -14
..*
*.*
.**
#P 45 6
...*
....*
*...*
.****
.
.
.
*
.**
..*
..*
.*
.
.
...*
....*
*...*
.****
#P 37 6
.**
****
**.**
..**
#P 36 17
*
**
#P 29 13
....**
**
.***
..*
#P 28 23
.****
*...*
....*
...*
#P 20 16
.**
*.*
..*
#P 15 11
.**
*.*
..*
#P 21 -12
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 13 -8
**..***
**..*.*
**..***
#P 7 -7
*
*
*
#P 23 1
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 15 5
**..***
**..*.*
**..***
#P 9 4
*
*
*
#P 11 -42
...**
.**.**
.****
..**
.
.
.*
.**
*.**
*.*
**
.
.
.
...**
.**.**
.****
..**
#P 3 -43
...*
....*
*...*
.****
#P 6 -34
**
*
#P -6 -26
..**
**.**
****
.**
#P -4 -15
.*****
*....*
.....*
....*
#P -2 11
....*
.....*
*....*
.*****
#P -4 22
.**
****
**.**
..**
#P 13 24
..**
.****
.**.**
...**
.
.
.
**
*.*
*.**
.**
.*
.
.
..**
.****
.**.**
...**
#P 8 32
*
**
#P 5 39
.****
*...*
....*
...*
#P -13 -22
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P -19 -18
.*.*
*..**
.*.*
#P -11 11
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P -17 15
.*.*
*..**
.*.*
#P -8 -63
...*
....*
*...*
.****
#P -10 -56
.*....*
..*.**
***..**
#P -8 -49
...*
....*
*...*
.****
#P -16 -49
.**
****
**.**
..**
#P -25 -64
.****
*...*
....*
...*
#P -32 -58
.*
..*
***
#P -23 -46
..**
**.**
****
.**
.
.**
****
**.**
..**
#P -28 -44
.*
..*
*..*
..*
.*
#P -50 -50
...**
***.**
*****
.***
#P -36 -35
.****
*...*
....*
...*
#P -9 45
...**
.**.**
.****
..**
.
.
.*
.**
*.**
*.*
**
.
.
.
...**
.**.**
.****
..**
#P -14 53
*
**
#P -17 44
...*
....*
*...*
.****
#P -25 60
.**
****
**.**
..**
#P -31 56
**
.**
*
#P -24 36
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P -32 40
.*..***
**..*.*
.*..***
#P -34 31
...*
....*
*...*
.****
#P -50 46
.***
*****
***.**
...**

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,905 @@
#Life 1.05
#D t log(t) via stifled breeder
#D Population in generation t is asymptotic to t log(t) / (6 log(3)).
#D A modified exponential aperiodic pattern emits a LWSS in gen
#D 20*3^n + 32 (n >= 1). Meanwhile, a breeder produces a line of
#D "stifled" guns, with eaters suppressing their outputs. Each LWSS
#D destifles one gun. So in gen t there are about log(t)/log(3)
#D active guns, which have emitted about t log(t)/(30 log(3)) gliders.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 2/11/92
#N
#P 152 -30
.....*
......*
..*...*
...****
.
.
.
.**
**.**
.*..*
.*..*
..**
.
.
.....*
......*
..*...*
...****
#P 144 -50
.****
*...*
....*
...*
.
.
.*
..*
..*
.**
*
.
.
.
.****
*...*
....*
...*
#P 146 -30
.**
****
**.**
..**
#P 136 -36
..**
**.**
****
.**
#P 127 -53
...*
....*
*...*
.****
#P 119 -45
..*
*.*
.**
#P 104 -30
..*
*.*
.**
#P 125 -14
*.*
**
.*
#P 130 -9
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 122 -5
**..***
**..*.*
**..***
#P 143 -19
**
*
#P 136 -24
..*
*..*
*...*
*...*
*...*
.*.*
..*
#P 136 -14
...*
....*
*...*
.****
#P 131 20
.****
*...*
....*
...*
.
.
**
*.*
..*
***
.
.
.
.
.****
*...*
....*
...*
#P 123 20
..**
**.**
****
.**
#P 110 13
.....****
....*...*
........*
**..*..*
***
**..*..*
........*
....*...*
.....****
#P 139 58
*
.***
#P 142 48
.****
*...*
....*
...*
.
.
.*
..*
..*
.**
.
.
.
.
.****
*...*
....*
...*
#P 136 59
*
**
#P 134 48
..**
**.**
****
.**
#P 142 76
...*
....*
*...*
.****
#P 151 77
..**
**.**
****
.**
#P 151 91
..**
**.**
****
.**
#P 144 82
..*
.*...***
*...*.***
.*......**
..*****.*
....****
.....*
#P 134 92
.**
****
**.**
..**
#P 135 68
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 127 72
**..***
**..*.*
**..***
#P 125 63
...*
....*
*...*
.****
#P 125 41
.****
*...*
....*
*..*
.
*..*
....*
*...*
.****
#P 118 43
..**
.****
*...**
.****
..**
#P 119 79
**
.**
*
#P 109 78
.***
*****
***.**
...**
#P 108 59
.******
*.....*
......*
.....*
#P 104 64
**
.**
*
#P 114 35
...*
....*
*...*
.****
#P 97 31
.******
*.....*
......*
.....*
#P 89 49
**
.**
*
#P 76 50
.....**
...**.**
...****
....**
.
.
****
*..**
.*..**
.*..*
..**
.
.
.
.....**
...**.**
...****
....**
#P 70 49
...*
....*
*...*
.****
#P 62 43
..**
**.**
****
.**
.
.**
****
**.**
..**
#P 55 45
...*
..*.*
**...*
..*.*
...*
#P 62 65
.**
****
**.**
..**
#P 45 61
....**
****.**
******
.****
#P 95 10
..**
...*
***
*
#P 101 -3
.**
*.*
**
#P 87 -36
.****
*...*
....*
*..*
.
.
**
*.*
..*
***
.
.
.
.
.****
*...*
....*
...*
#P 78 -30
....**
..*
.*..*
**
.**
#P 79 -22
..**
**.**
****
.**
#P 79 3
.****
*...*
....*
...*
#P 71 -3
.**
*.*
**
#P 65 10
..**
...*
***
*
#P 72 -21
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P 66 -17
.*.*
*..**
.*.*
#P 70 -39
...*
....*
*...*
.****
#P 59 -28
..*
*.*
.**
#P 53 -46
...*
....*
*...*
.****
.
.
.
*
.**
..*
..*
.*
.
.
...*
....*
*...*
.****
#P 46 -40
....**
.
..**
.**
**
.*
#P 45 -32
.**
****
**.**
..**
#P 50 -12
...*
....*
*...*
.****
#P 33 -30
....****
...*...*
*......*
.*....*
***
.*......*
*........*
...*.....*
....******
#P 36 -47
.****
*...*
....*
...*
#P 42 -14
**
*
#P 41 -3
.**
*.*
**
#P 35 10
..**
...*
***
*
#P 13 8
..*
**
.*
#P 5 10
..**
...*
***
*
#P 11 -3
.**
*.*
**
#P 12 -14
**
*
#P 19 -43
.....*
......*
*.....*
.******
#P -4 -46
.**
****
**.**
..**
#P -4 -32
.**
****
**.**
..**
#P -11 -40
.....*
....****
..*****.*
.*......**
*...*.***
.*...***
..*
#P -13 -31
.****
*...*
....*
...*
#P -21 -30
..**
**.**
****
.**
.
.**
****
**.**
..**
#P -28 -28
...*
..*.*
**...*
..*.*
...*
#P -21 -47
..**
**.**
****
.**
#P -26 -43
*
.**
**
#P -38 -43
.****
******
****.**
....**
#P -18 -14
**
*
#P -19 -3
.**
*.*
**
#P -17 8
..*
**
.*
#P -25 10
..**
...*
***
*
#P -38 5
**
*
#P -30 28
....*
.....*
*....*
.*****
#P 18 44
.....*
......*
..*...*
...****
.
.
.
.**
**.**
.*..*
.*..*
..**
.
.
.....*
......*
..*...*
...****
#P 12 44
.**
****
**.**
..**
#P 3 37
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P -5 41
**..***
**..*.*
**..***
#P 3 61
.****
*...*
....*
...*
#P -14 55
.....*
......*
*.....*
.******
#P -11 48
.**
*.*
..*
#P -52 40
....*
.....*
*....*
.*****
#P -51 -53
..**
.****
.**.**
...**
.
.
.
**
*.*
*.**
.**
.*
.
.
..**
.****
.**.**
...**
#P -60 -45
...***
***
*
***
#P -59 -38
.****
*...*
....*
...*
#P -68 -55
.**
****
**.**
..**
#P -74 -65
..**
**.**
****
.**
.
.**
****
**.**
..**
#P -79 -63
.*
..*
*..*
..*
.*
#P -89 -63
..*
**
.*
#P -77 -42
.****
*...*
....*
...*
.
.
**
*.*
..*
***
.
.
.
.
.****
*...*
....*
...*
#P -86 -36
....**
..*
.*..*
**
.**
#P -88 -37
**
*
#P -85 -28
..**
**.**
****
.**
#P -92 -27
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P -98 -23
.*.*
*..**
.*.*
#P -94 -45
...*
....*
*...*
.****
#P -77 32
.**
****
**.**
..**
#P -77 46
.**
****
**.**
..**
#P -82 37
...*
.*
.*..**
*.....*
.*.*..**
.*...**
...***
#P -86 33
.****
*...*
....*
...*
#P -93 25
.****
*...*
....*
...*
.
...*
....*
*...*
.****
#P -96 27
*
.*
***
.*
*
#P -94 49
..**
**.**
****
.**
#P -119 35
...**
***.**
*****
.***
#P -92 -81
**
.*
#P -94 -76
**
*
#P -113 -69
**
*
#P -107 -84
...*
..*.*
.*.**
**.**
.*.**
..*.*
...*
#P -117 -86
*.*
*..*
...**
.*...**
...**
*..*
*.*
#P -126 -83
**
*
#P -133 -96
**
*
#P -136 -86
...*
..***
.*****
**...**
.*****
.*...*
..*.*
...*
#P -138 -76
...*
.**.**
.
*.....*
.
**...**
#P -134 -59
**...**
.
.*...*
..***
..***
#P -132 -52
...*
..***
.*...*
...*
*.....*
*.....*
.*...*
..***
#P -134 -38
..**
...*
***
*
#P -119 -31
....*
.....*
*....*
.*****
#P -124 -22
.*
**
#P -137 -24
....**
...***
*.**
*..*
*.**
...***
....**
#P -146 -26
*
*.*
.*.*
.*..*
.*.*
*.*
*
#P -158 -24
*
**
#P -136 -28
**
.**
*
#P -144 -34
***
*
.*
#P -145 -43
***
*..*
*
*
*
*
.*
#P -160 -43
.*
***
*.**
.***
.***
.***
.**
#P -157 -55
.***...***
*..*...*..*
...*...*
...*...*
..*.....*
#P -153 -49
***
*.*
***
.
.
***
***

View File

@ -0,0 +1,44 @@
#Life 1.05
#D Blinker ship
#D Leaves a trail of blinkers
#D which are eaten by a pattern
#D with not quite a large enough
#D appetite (6c/13). A similar
#D idea is shown in PIPUF.
#N
#P 10 -4
.****
*...*
....*
*..*
.
*..*
....*
*...*
.****
#P 6 -1
**
***
**
#P 1 -8
.**
****
**.**
..**
#P 1 5
..**
**.**
****
.**
#P -3 -2
...*
.***
***
.***
...*
#P -11 -2
.***
*...*
*...*
*...*
.***

View File

@ -0,0 +1,51 @@
#Life 1.05
#D Another Blinker puffer
#D
#D An HWSS cleans up behind it.
#D This was was found using a
#D search program.
#N
#P 15 -6
.*
..*.....*
.*...*****
.**.**...**
.*.......*
.*..*..**
*
.*..*..**
.*.......*
.**.**...**
.*...*****
..*.....*
.*
#P 8 -14
.****
*...*
....*
*..*
*
*.*
...**
.*..*
***.***
......*
......*
#P 8 4
......*
......*
***.***
.*..*
...**
*.*
*
*..*
....*
*...*
.****
#P -5 -7
.******
*.....*
......*
*....*
..**

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
#Life 1.05
#D p16 backward rake
#D A very simple construction: just
#D four *WSS and an extra cell. By
#D Tim Coe, 1996.
#N
#P 4 -4
....**
****.**
.*****
..***
#P 5 2
.****
*...*
....*
...*
#P -6 -10
.******
*.....*
......*
.....*
#P -4 5
....**
****.**
******
.****

View File

@ -0,0 +1,39 @@
#Life 1.05
#D p16 forward rake
#D Just like the backward rake
#D (coerake1.lif) but with an
#D additional pair of *WSS to
#D turn each glider around.
#D By Tim Coe, 1996.
#N
#P 4 -4
....**
****.**
.*****
..***
.
.
..****
.*...*
.....*
....*
#P -4 5
....**
****.**
******
.****
#P -6 -10
.******
*.....*
......*
.....*
#P -17 -8
.******
*.....*
......*
.....*
#P -20 4
.....*
......*
*.....*
.******

View File

@ -0,0 +1,146 @@
#Life 1.05
#D 10-engine Cordership
#D Based on switch engine (SWITCHEN, by Charles Corderman)
#D Dean Hickerson, dean@ucdmath.ucdavis.edu
#N
#P 17 -25
*
*
..*.....*
.*......*.*
*...*..*
.*..*.*.**
......*.**
#P 1 -9
**..*
...*.*
..*
.
....**
.
.....**
....*
..**.**
.....**
...*
#P -9 1
*
*
..*.....*
.*......*.*
*...*..*
.*..*.*.**
......*.**
#P -25 17
**..*
...*.*
..*
.
....**
.
.....**
....*
..**.**
.....**
...*
#P 11 2
...***
..*
.*....**
*...*
*..*....*
*...*...*
.**.*.***
....*
.....****
.......**
#P 2 11
...***
..*...*
.*....*
*...*
*..*.***
*.......*
..*...*.*
..*...*.**
....***.**
#P 51 7
.*
*.*
.
*..*
..**
...*
#P 33 25
.*.*
*
.*..*
...***
#P 25 33
.*
*.*
.
*..*
..**
...*
#P 7 51
.*.*
*
.*..*
...***
#P 37 -18
**
**
#P 45 -10
**
**
#P 53 -2
**
**
#P 61 6
**
**
#P -18 37
**
**
#P -10 45
**
**
#P -2 53
**
**
#P 6 61
**
**
#P 17 51
*.*
*.*
.*
#P 25 43
**
..*
**
#P 43 25
*.*
*.*
.*
#P 51 17
**
..*
**
#P 67 -7
*.*
**
.*
#P 65 42
.*
**
*.*
#P 45 47
***
*
.*
#P 23 71
***
*
.*

View File

@ -0,0 +1,136 @@
#Life 1.05
#D 7-engine Cordership
#D deleting 10 still lifes and a blinker.
#D Based on switch engine (SWITCHEN, by Charles Corderman)
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 8/23/93
#N
#P -13 -43
.*.*
*
.*..*
...*.*
......*
.....***
.....*
...**
.....*
...*..*
...*.*
...*
#P -26 -34
.*
*.*
.
*..*...*.***
..*....*
...*.**.*.*
....**...*
.....*
#P -39 -17
.*.*
*
.*..*
...*.*
......*
.....***
.....*
...**
.....*
...*..*
...*.*
...*
#P 3 -39
..***
.
.
.
...***
...***
...**
..*
**..*
.*...*
.*..*
..***
#P -10 -22
..***
.**..*
*.....*
*
.*..**
..**
#P -15 -23
.*
.*
*.*
.*
.*
#P -5 -5
.*
*
.*
#P -2 -8
.*
*.**
...**
.....*
.****
...*
#P 20 -18
.*
*.*
*.*
*..*
.*.*
....*
...**
...*
#P 1 1
.***
*...*
.**
...**.**
.....**
#P -6 8
.*
*.*
*.*
*..*
.*.*
....*
...**
...*
#P -32 4
**
**
#P -24 12
**
**
#P -16 20
**
**
#P 14 -34
**
**
#P 22 -26
**
**
#P 30 -18
**
**
#P 35 -30
*
*.*
**
#P 36 14
***
*
.*
#P 14 20
.**
**
..*
#P 12 40
.*
**
*.*

View File

@ -0,0 +1,221 @@
#Life 1.05
#D Diagonal sawtooth with expansion factor 6
#D Population is unbounded but does not tend to infinity. Its graph is
#D a sawtooth function with ever-increasing teeth. More specifically,
#D the population in generation t = 8*6^n - 216 (n >= 2) is t/36 + 558,
#D but the population in generation 32*6^n - 429 (n >= 2) is only 469.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 5/14/91
#N
#P -30 -35
..***
.*...*
*....*
*..*.*
**.*.*
..**.*..*
....**..*
.....***
#P -40 -29
..***
.*..*
*....*
*..***
*.....*
.*******
.......*
.......*
.....**
#P -56 -9
..***
.*...*
*....*
*..*.*
**.*.*
..**.*..*
....**..*
.....***
#P -18 -33
..**...***
.****
*...**
.**.*.*
.
.........*
......*..*
.......***
#P -32 -17
***.*
***.*
.*........**
..*...***.**
...*......*
....*.*.*.*
.....*
#P 2 -10
...*
..*.*
.**.**
.**.**
***
***...*
.**
.*.*
#P -13 5
....**
..******
.******
*......*
.***
..**
.....*
#P -24 16
...*
..*.*
.**.**
.**.**
***
***...*
.**
.*.*
#P -48 10
**
*
#P -40 18
**
*
#P -32 26
**
*
#P -2 -28
**
*
#P 6 -20
**
*
#P 14 -12
**
*
#P -3 11
....*
**..**.***
*.....****
....**
#P -8 16
...*
.***
*
**
#P -13 26
**...**
.
*.....*
.
.**.**
...*
#P -11 34
...*
..*.*
.*...*
.*****
**...**
.*****
..***
...*
#P -8 50
**
*
#P -4 27
***
..*
.*
#P 2 32
***
*
.*
#P 10 19
...*
.***
*
**
#P 5 28
**...**
.*****
..***
...*
#P 3 40
..***
.
..*.*
.*****
**...**
**...**
#P 5 53
**
*
#P 15 22
*
***
...*
..**
#P 17 31
**...**
*.....*
.
.*...*
..***
#P 19 42
...*
.**.**
.
*.....*
.
**...**
#P 22 56
**
*
#P 35 31
.*****
*.***.*
.*...*
..***
...*
.**
*.*
*.*
.*
#P 33 42
**.*.**
*.....*
.*...*
..***
#P 35 53
**
*
#P 22 21
.*
**
*.*
#P 24 16
.*..*
*...**..**
*.......*
.****
#P 37 19
**
*
#P 21 -11
...*
.***
*
**
#P 16 -2
**...**
*.*.*.*
.*****
..***
...*
#P 21 8
**
*
.***
...*

View File

@ -0,0 +1,207 @@
#Life 1.05
#D Caber tosser
#D Population in generation t is asymptotic to 5 log(t)/log(2).
#D
#D A glider bounces back and forth between a Cordership and a fixed
#D reflector; the round trip time doubles with each trip. Whenever
#D the glider hits the fixed reflector, an extra glider is created;
#D these gliders eventually dominate the population.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 5/1/91
#N
#P -31 -62
..*
..*
..*
.....**
.....**
*...***
.***
..*
.**
.***
...*
.*
...*
.***
#P -47 -50
.....*
......*.**.*.*
***...****...*
......*..**.**
.....*
...***
...***
#P -57 -36
..*
..*
..*
.....**
.....**
*...***
.***
..*
.**
.***
...*
.*
...*
.***
#P -37 -40
.*.*
.*.*.*.......*
*..**.*....***
.**...*.*.**.*
.**...**.*****
.....*.**...**
....*.*
#P -13 -58
.**
**
.*
***
***
..*
*..*
***
.*
#P -15 -43
*.*
*..*
*..*
*...*
.*.*
..*
#P -2 -35
*
*
..*.....*
.*......*.*
*...*..*
.*..*.*.**
......*.**
#P -18 -19
**..*
...*.*
..*
.
....**
.
.....**
....*
..**.**
.....**
...*
#P -28 -9
*
*
..*.....*
.*......*.*
*...*..*
.*..*.*.**
......*.**
#P -51 -13
**
**
#P -43 -5
**
**
#P -35 3
**
**
#P -5 -51
**
**
#P 3 -43
**
**
#P 11 -35
**
**
#P -37 -26
*
.**
**
#P 38 40
..**
.*.*
.*
**
#P 50 35
.*
*.*
**.*
**.**
**.*.***
*.*..*..*
.*....**
#P 61 37
**
*.*
...*
*..*
...*
*.*
**
#P 72 40
**
**
#P 48 45
*.*
**
.*
#P 43 53
.*
**
*.*
#P 20 51
.**
*.*
..*
#P -1 55
**
**
#P 10 53
*
*.*
...**
...**
...**
*.*
*
#P 20 55
....**
....**
.**
***
.**
....**
....**
#P 31 53
..**
..*
*.*
**
#P 31 62
..**
.*.*
.*
**
#P 40 57
**
*..*
....*
....*
....*
*..*
**
#P 51 55
...*.*
.*...*
.*
*....*
.*
.*...*
...*.*
#P 65 57
**
**

View File

@ -0,0 +1,85 @@
#Life 1.05
#D Crystal&decay 2700
#D
#D A p150 gun fires at a pair of pentadecathlons. When the first glider
#D hits the PDs, it is reflected back and hits the second, forming a
#D honey farm. Subsequent gliders form a crystal growing upstream. When
#D the crystal reaches an eater near the gun, it begins to decay.
#D When it's all gone, the cycle begins again.
#D
#D The period of this pattern is 2700, but by moving the PDs, any period
#D of the form 750 + 1950n (n>=0) can be obtained.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 3/27/90
#N
#P -14 -23
**
**
#P -17 -19
...*
..***
.*...*
...*
*.....*
*.....*
.*...*
..***
#P -19 2
**...**
.
.*...*
..***
..***
#P -16 11
**
**
#P -4 -13
**
**
#P 5 -16
**
*.*
.***
..***
.***
*.*
**
#P 17 -14
....*
.****
****
*..*
****
.****
....*
#P 30 -11
**
**
#P 13 9
...*
.***
*
**
#P 1 19
**
*
.***
...*
#P 45 47
..**......**
.*..*....*..*
******..******
.*..*....*..*
..**......**
#P 40 59
***
*.*
***
***
***
***
*.*
***
#P -14 -4
..*
*.*
.**

View File

@ -0,0 +1,443 @@
#Life 1.05
#D Cyclotron
#D
#D An inefficient but amusing period 874 = 46*19 glider gun based on
#D a 3 glider collision that produces 4 blocks, 4 beehives,
#D 8 blinkers, and 13 gliders. 28 p46 shuttles are used to redirect
#D some of the gliders: 1 escapes, 1 is destroyed, 8 are reflected
#D back to delete the debris, and 3 are reflected back to collide
#D again.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 7/22/92
#N
#P -3 -20
.*
**
#P -10 -37
***...***
*..*.*..*
*.......*
#P -3 -47
**
.*
#P 4 -20
*
**
#P 4 -37
***...***
*..*.*..*
*.......*
#P 4 -47
**
*
#P -3 23
**
.*
#P -10 39
*.......*
*..*.*..*
***...***
#P -3 50
.*
**
#P 4 23
**
*
#P 4 39
*.......*
*..*.*..*
***...***
#P 4 50
*
**
#P -18 -47
.*
**
#P -35 -55
..***
*....*
*.....*
.....*
...**
.
...**
.....*
*.....*
*....*
..***
#P -45 -54
**
*
#P -44 -75
**
.*
#P -61 -75
***
*
*
.*
.
.*
*
*
***
#P -71 -75
**
*
#P -82 -76
.*
**
#P -89 -92
**.....**
**.*.*.**
*..*.*..*
***...***
#P -82 -103
**
.*
#P -97 -79
.*
**
#P -105 -94
...*...*
....*.*
....*.*
....*.*
*..*...*..*
.***...***
#P -97 -106
**
.*
#P -75 -36
.*
**
#P -92 -44
..***
*....*
*.....*
.....*
...**
.
...**
.....*
*.....*
*....*
..***
#P -102 -43
**
*
#P -115 -57
**
*
#P -116 -42
***.....***
***.....***
.**.....**
...*...*
.*..*.*..*
*...*.*...*
.*..*.*..*
.***...***
#P -108 -30
.*
**
#P -140 -54
**
.*
#P -148 -45
..*.....*
.***...***
**.*...*.**
#P -147 -27
*
**
#P -154 37
**
*
#P -155 45
..*.....*
.***...***
*..**.**..*
***.....***
#P -147 64
.*
**
#P -127 98
*
**
#P -118 90
..*
.**
**
.**
.
.
.
.**
**
.**
..*
#P -100 91
**
.*
#P -113 78
*
**
#P -106 78
.*
**
#P -114 64
.***...***
.***...***
*.**...**.*
*.**...**.*
.**.....**
..*.....*
#P -113 51
**
*
#P -102 47
*
**
#P -104 31
..*.......*
.
***.......***
.**.**.**.**
..***...***
...*.....*
#P -102 20
**
*
#P -80 77
**
.*
#P -87 87
.*.....*
***...***
*.**.**.*
..**.**
..**.**
..**.**
#P -80 104
.*
**
#P -70 78
*
**
#P -65 70
..**..*.*
.***.*...*
**......*
.*.*****
..***
.
..***
.*.*****
**......*
.***.*...*
..**..*.*
#P -43 78
.*
**
#P -45 57
*
**
#P -33 48
..*
*..*
*****
***.**
.**.*
..**
.
..**
.**.*
***.**
*****
*..*
..*
#P -18 50
**
.*
#P 17 48
**
*
#P 22 47
.*.**
*..**..***
*......**
**...***
..*...*
.
..*...*
**...***
*......**
*..**..***
.*.**
#P 44 55
.*
**
#P 56 74
*
**
#P 65 66
..*
.**
**
.**
.
.
.
.**
**
.**
..*
#P 83 74
.*
**
#P 152 15
.*
**
#P 144 2
.**.....**
*..*...*..*
...**.**
..*.*.*.*
..*.*.*.*
*.........*
#P 152 -12
**
.*
#P 74 4
.*
**
#P 67 -10
..**.**
..**.**
..**.**
*.**.**.*
***...***
.*.....*
#P 74 -23
**
.*
#P 152 -35
.*
**
#P 144 -49
..*.....*
.***...***
*...*.*...*
*.........*
.***...***
#P 145 -62
**
*
#P 106 -47
*
**
#P 105 -60
.*.......*
*.*.....*.*
...*...*
*..*...*..*
.*.*...*.*
...**.**
**.**.**.**
**..*.*..**
.***...***
..*.....*
#P 106 -74
**
*
#P 127 -94
**
.*
#P 116 -95
****
*..**
.*..**
.*..*
..**
.
..**
.*..*
.*..**
*..**
****
#P 100 -87
*
**
#P 80 -105
**
*
#P 79 -88
***.....***
*..**.**..*
.***...***
..*.....*
#P 80 -78
*
**
#P 73 -81
**
.*
#P 62 -81
***
..*
..*
.*
.
.*
..*
..*
***
#P 46 -81
**
*
#P 43 -53
**
.*
#P 26 -54
..***
*....*
*.....*
.....*
...**
.
...**
.....*
*.....*
*....*
..***
#P 16 -53
**
*
#P -121 -27
..*
*.*
.**
#P -133 41
.*
.**
*.*
#P -47 -39
*.*
.**
.*
#P -44 39
.**
*.*
..*
#P 42 -42
..*
**
.**
#P 118 -27
***
*
.*
#P 127 -37
*.*
**
.*

View File

@ -0,0 +1,232 @@
#Life 1.05
#D Double-x
#D By Bob Wainwright
#N
#P -64 -32
**
**
#P -66 -26
...*.....*
..***...***
.*..**.**..*
.*...*.*...*
...*.*.*.*
.
**.**...**.**
..*.......*
#P -60 -14
...*
..***
.*...*
*.....*
*.....*
.*...*
.
.*...*
*.....*
*.....*
.*...*
..***
...*
#P -64 -5
**
**
#P -64 2
**
**
#P -66 8
...*.....*
..***...***
.*..**.**..*
.*...*.*...*
...*.*.*.*
.
**.**...**.**
..*.......*
#P -60 20
...*
..***
.*...*
*.....*
*.....*
.*...*
.
.*...*
*.....*
*.....*
.*...*
..***
...*
#P -64 29
**
**
#P 63 -32
**
**
#P 54 -26
...*.....*
..***...***
.*..**.**..*
.*...*.*...*
...*.*.*.*
.
**.**...**.**
..*.......*
#P 54 -14
...*
..***
.*...*
*.....*
*.....*
.*...*
.
.*...*
*.....*
*.....*
.*...*
..***
...*
#P 63 -5
**
**
#P 63 2
**
**
#P 54 8
...*.....*
..***...***
.*..**.**..*
.*...*.*...*
...*.*.*.*
.
**.**...**.**
..*.......*
#P 54 20
...*
..***
.*...*
*.....*
*.....*
.*...*
.
.*...*
*.....*
*.....*
.*...*
..***
...*
#P 63 29
**
**
#P -21 -27
..**
**.**
****
.**
#P 17 -27
.**
**.**
.****
..**
#P -44 -28
.**
****
**.**
..**
#P 40 -28
..**
.****
**.**
.**
#P -46 -20
***
*
.*
#P 44 -20
***
..*
.*
#P -34 -9
**
*.*
*
#P 32 -9
.**
*.*
..*
#P -23 3
***
*
.*
#P 21 3
***
..*
.*
#P -11 14
**
*.*
*
#P 9 14
.**
*.*
..*
#P -10 23
.****
*...*
....*
*..*
#P 6 23
****
*...*
*
.*..*
#P -33 22
*..*
....*
*...*
.****
#P 29 22
.*..*
*
*...*
****
#P -52 22
..*
**
.**
#P 50 22
*
.**
**
#P -40 11
*.*
**
.*
#P 38 11
*.*
.**
.*
#P -29 -1
..*
**
.**
#P 27 -1
*
.**
**
#P -17 -12
*.*
**
.*
#P 15 -12
*.*
.**
.*
#P -6 -24
..*
**
.**
#P 4 -24
*
.**
**

View File

@ -0,0 +1,609 @@
#Life 1.05
#D t^1.5
#D Population in generation t is asymptotic to t^(3/2)/sqrt(9720).
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 12/6/91
#N
#P -69 -83
***...........***
*..*..........*..*
*......***....*
*.....*..*....*
.*........*....*
#P -39 -85
.***...........***
*..*..........*..*
...*....***......*
...*....*..*.....*
..*....*........*
#P -55 -75
.*
***
*.**
.***
.**
#P -64 -71
*
**
#P -62 -68
...*
...*
.*
**
.**
..*
#P -72 -66
.***
*..*
...*
...*
..*
#P -64 -56
***
..*
.*
#P -59 -51
***
..*
.*
#P -57 -61
.***...***
*..*...*..*
...*...*
...*...*
..*.....*
#P -53 -55
***
*.*
***
.
.
***
***
#P -39 -77
..*
.***
**.*
***
.**
#P -32 -70
*
*
..*
..**
.**
.*
#P -28 -73
.*
**
#P -22 -68
***
*..*
*
*
.*
#P -29 -58
***
*
.*
#P -34 -53
***
*
.*
#P -44 -63
.***...***
*..*...*..*
...*...*
...*...*
..*.....*
#P -40 -57
***
*.*
***
.
.
***
***
#P -87 -52
.*.............*
***...........***
*.**....*.....*.**
.***...***.....***
.**...**..*....**
........***
#P -88 -43
.***
*..*
...*
...*
..*
#P -79 -43
*
**
#P -52 -42
.*
*.*
***
.**
#P -41 -44
.*
*.*
***
**
#P -60 -37
***
*..*
*
*
*
.*
#P -71 -34
.*
***
*.**
.***
.**
#P -67 -27
..*.....*
.***...***
**.*...*.**
***.....***
.**.....**
#P -63 -21
.*
***
.
*.*
.*
#P -108 -32
.***...........***
*..*..........*..*
...*....***......*
...*....*..*.....*
..*....*...*....*
#P -102 -27
*.*..**
....*
*.**
.***
.***
..**
.*.*
.*..*
.*
.....*
..*..**
..*..**
...***
...***
#P -94 -24
..*
.***
**.*
***
.**
#P -109 -15
***
*..*
*
*
.*
#P -103 -6
.**
*.*
..*
#P -91 -17
.*.....*
***...***
*.**.**.*
.***.***
.**...**
#P -89 -11
..*
.*.*
*...*
..*
#P -80 -4
***
*..*
*
*
.*
#P -95 9
.*
***
*.**
.***
.***
.**
#P -34 -39
.***
*..*
...*
...*
...*
..*
#P -23 -36
..*
.***
**.*
***
.**
#P -21 -54
..*.............*
.***...........***
**.*.....*....**.*
***.....***...***
.**....*..**...**
.......***
#P -13 -45
.*
**
#P -6 -45
***
*..*
*
*
.*
#P -34 -29
..*.....*
.***...***
**.*...*.**
***.....***
.**.....**
#P -30 -23
.*
***
.
*.*
.*
#P -51 36
***
..*
.*
#P -36 51
***
..*
.*
#P 0 -32
.*.............*
***...........***
*.**....*.....*.**
.***...***.....***
.**...**..*....**
........***
#P -1 -23
.***
*..*
...*
...*
..*
#P 6 -23
...*
...*
...*
*.*
*.*
***
#P 15 -15
..*
.***
**.*
***
.**
#P 11 -7
.*
**
*.*
#P -9 -16
.***...***
*..*...*..*
...*...*
...*...*
..*.....*
#P -5 -10
***
*.*
***
.
.
***
.*
#P -14 -6
.***
*..*
...*
...*
..*
#P -25 36
.***...........***
*..*..........*..*
...*....***......*
...*....*..*.....*
..*....*...*..*.*
#P -18 41
*.*.**
.**.**
..***
.
.
..**
..*
#P -25 44
..*
.***
**.*
***
.**
#P -9 54
.***
*..*
...*
...*
..*
#P -1 80
.***
*..*
...*
...*
..*
#P -10 20
..*
.***
**.*
***
***
.**
#P 6 9
.***...........***
*..*..........*..*
...*....***......*
...*....*..*.....*
..*....*...*....*
.......****
........*
#P 6 17
..*
.***
**.*
***
.**
#P 23 26
***
*..*
*
*
.*
#P -1 26
.***...***
*..*...*..*
...*...*
...*...*
..*.....*
#P 3 32
***
*.*
***
.
.
***
.*
#P 17 41
.***
*..*
...*
...*
...*
...*
..*
#P 28 15
.**
*.*
..*
#P 33 20
.**
*.*
..*
#P 38 22
.*
*...*
*..**
.....*
.**
#P 34 30
***
.***
#P 35 0
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 27 4
.*..***
**..*.*
.*..***
#P 52 6
.....*
......*
..*...*
...****
.
.
.
.**
**.**
.*..*
.*..*
..**
.
.
.....*
......*
..*...*
...****
#P 46 6
.**
****
**.**
..**
#P 41 39
....**
****.**
******
.****
#P 50 40
.****
******
****.**
....**
#P 62 48
.***
*****
***.**
...**
#P 64 30
***
.***
#P 68 34
.****
*...*
....*
...*
#P 85 -1
...*
....*
*...*
.****
#P 78 6
..*
*.*
.**
#P 73 11
..*
*.*
.**
#P 68 16
..*
*.*
.**
#P 99 2
....****
...*...*
.......*
...*..*
.
.**
*****
*....*
***..*
.*..**
..**
.
.
.
....****
...*...*
.......*
......*
#P 94 16
..**
**.**
****
.**
#P 90 9
..*.***
**...*
*.*
*.**
.**
..*
#P 86 18
.****
*...*
....*
...*
.
.
.*
..*
..*
.**
*
.
.
.
.****
*...*
....*
...*
#P 82 26
**
*
#P 78 18
..**
**.**
****
.**
#P 104 47
..**
**.**
****
.**
.
.
*
**
.**
.*
*
.
.
.
..**
**.**
****
.**
#P 97 52
..*
.*...**
*...*.*
.*
..*****
....***
.....*
#P 95 46
...*
....*
*...*
.****
#P 88 38
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 85 42
*
.**
*
#P 87 62
.**
****
**.**
..**
#P 77 54
**
.**
*

View File

@ -0,0 +1,127 @@
#Life 1.05
#D Examples of glider eaters.
#D Larger examples by Dean Hickerson.
#N
#P -31 -15
..*
*.*
.**
#P -23 -8
**
*.*
..*
..**
#P -15 -17
..*
*.*
.**
#P -8 -10
**.*
**.***
......*
**.***
.*.*
.*.*
..*
#P 6 -11
.*
..*
***
#P 12 -16
.*
..*
***
#P 8 -6
...**..**
*...*..**
****
.
**
**
#P 27 -11
.*
..*
***
#P 24 -16
.*
..*
***
#P 23 -7
**
**...*
....*.*
.....*.*
.......*
.......**
#P -35 1
..*
*.*
.**
#P -29 7
.**
*..*..**
*.*....*..*
.*.....*.*.*
....**.*..*
....*..*
.*....*
.*****
.
...*
..*.*
...*
#P -13 6
..*
*.*
.**
#P -8 10
......**
...**..*
**..*.*
**.*..**
...*.*
...*.*
....*
#P 4 6
..*
*.*
.**
#P 6 12
..*...**
.*.*...*
.**...*
.....*
.*****.*
..*...*.*
*....*..*
**....**
#P 20 6
..*
*.*
.**
#P 19 11
...........**
......**.*..*
.....*.*.***
**...*.*
*..*.*.***
.****.*...*
......*..**
...*.*
...**
#P -33 24
.*
..*
***
#P -30 26
...........*
.........***
........*
.....**..*
....*..***
...*.*....**
...*.*.**.*
.***.*.*..*
*...*.*..*
**..*..**
...**

View File

@ -0,0 +1,15 @@
#Life 1.05
#D A Garden of Eden pattern
#D No pattern can have this as
#D its second generation.
#N
#P -16 -4
*********************************
**.*.***.***.**.*.*.*.*.*.*.*.*.*
*.*.***.***.****.***.*.*.*.*.*.*
*****.***.***.****.**************
*.*.**.***.***.*.***.*.*.*.*.*.*
****.***.***.*****.**.*.*.*.*.*.*
.**.***.***.***.*.*.*************
**.**.***.***.**.****.*.*.*.*.*.*
******************.**************

View File

@ -0,0 +1,40 @@
#Life 1.05
#D Electric fence
#D By Dean Hickerson, 1992.
#D Both ends found by search program.
#D See also STRETCH.
#N
#P -37 -11
.....................**
....................*.*
................**..*
................*.*.**
........*.........*
**.....****.......*....**
*..*.**...***.*.*.**.....**
.****.*...*...*.**....**.**
......*.*..*.*...**.*.***
.**..**.**.*.****...**
.*......*..*.*...**...*
...*....*.*...***..***.*
..**.....*......*..*...*
.......................**
#P 6 -9
.**.......**
.*....**.*..*.**.*
...*...*.*.**.*.**
..**.....*..*.*...**
..*....*..*.*.***...*
**.*..**.*.*...*..**.*
..**.*...**....**....*
..*........**.*.*.**.**
.....*...*...**.*..*.*
....*.*...**....*..*.*
.....*.....*.***....*
...........*.*
............*
#P -9 -6
**...**...**
..**...**...**
..**...**...**
**...**...**

View File

@ -0,0 +1,751 @@
#Life 1.05
#D p90 Foreward LWSS rake
#D
#D David Bell
#N
#P -93 -124
............*.......*...........................*.......*
...........****...****.........................****...****
..........*...**.**...*..........***..........*...**.**...*
..........*....*.*....*..........***..........*....*.*....*
........*.*.*.**.**.*.*.*.......*...*.......*.*.*.**.**.*.*.*
.......*......**.**......*.................*......**.**......*
......**.*...*.....*...*.**....*.....*....**.*...*.....*...*.**
....**.*.**...........**.*.*...**.*.**...*.*.**...........**.*.**
..**.*......................*...........*......................*.**
.*...*......................*...*...*...*......................*...*
..*.*.......................*....*.*....*.......................*.*
.............................*..*...*..*
...............................*.*.*.*
............................**.*..*..*.**
...........................*.*.*.***.*.*.*
...........................*.*..**.**..*.*
............................***..*.*..***
.............................*.**...**.*
...........................**...*...*...**
...........................*.*....*....*.*
.............................*..*.*.*..*
.............................*.***.***.*
.............................*.*.....*.*
..........................**.*.*..*..*.*.**
..........................**.*.*..*..*.*.**
.............................*.*.***.*.*
............................*..*******..*
..*.**.***.................................................***.**.*
.**.**....**.*................*.......*................*.**....**.**
*..*.*..*...***..................***..................***...*..*.*..*
.*.....*...*...*.............***.....***.............*...*...*.....*
..............**....***.....**.***.***.**.....***....**
..............**..**.*.........***.***.........*.**..**
...............**....*.**.........*.........**.*....**
....................*..*.*...**.......**...*.*..*
...............**.*..*.*.*.*.............*.*.*.*..*.**
...................*........*...........*........*
..........................*.*************.*
.
.................................***
.
...............................*.....*
...............................*..*..*
#P -111 -82
............**
..........***.*..........***
......**.**...**.*.....*...**..***
......**..*..*.**.*...**...****.*.*
.....*..*......*...*.....**.*...**
....*..........*...*..*.....*...*..***
.......*......**.**.*.......*...**..***
..***.......**.*.*.....*....*.*.*.*....*
.**.*.**...*.....*.*..*****..**.*
*...*...*..**.*.*..*....*...**.*..**.*.*
.........***.**..***..............***
.......*..*...***....*............*
.........*.....**...*.............*
#P -69 -76
..**.............**
..*.*...........*.*
..*..*.........*..*
..*..*.........*..*
...*.*.........*.*
....*...........*
....**.........**
....*...........*
.
........**.**
.........*.*
........**.**
.
.......*.....*
.....**.......**
.....**..*.*..**
.....**.**.**.**
......*..*.*..*
.......**...**
.
.
.
.....*
.
.......*....**
.......*....**
........*
.......**...**
.......**...**
.
.
......*
......*
.......*
.......**
......***.**
.......*...*
....*...***
...*.*...*
...*..**....**
......**...***
..**.*.***.*..*
**.......*...*
**.**....**..*
...........**
....*
....*
....*
.
.
.
.
......*
.....*..*
.....*...*
.....**..*
.....**.**
.......*
.
.**
*.*
*
**
....***.*
........*...**
...*.**.**
...**....*
..**....**
.........*.*
.........*..*
.......**..*
.......****
.......***
#P -49 -28
.............*
...........***.***
..........**......*
.....*...*..*...**
....****
.......*
.*..*.*..*
*.......*
#P -116 -19
...........**............*
........**.*.**..........***...*
.....****..*....*....***.....****
....*....*......**...***.....*...*
....***.......*..**..**..*.....*.***
..............*...**.......**.*..**..*
...*........*.*.***.......**...*.*...*
**.****....**.*.*.*..**.*.**.*.*....**
**.*..*...*..**.*....*..*.*....*.**..*
*.*.*.***....***..**...*...**.*.**
.......**.......****............*..*
.......*..*.*....***............**
.............*.*
#P -81 6
......***
..*.**...*
.***...***..***
*...*....***.*.*
.*.......*....*
..........**
#P -104 23
...................***..........*
..........*.**...*..*.**......***.***
.........*..*.**.**.*.*......**......*
..*.**..**..*...*.*..**.**..*...*.*.*
.**.**.*.***.*.*...*...*.*..*.*
*..*.*.*.........*...*.*.*.**.....**....**
.*......*.......****.*...*.*.**....**..**.*
...................*...........**.***..**.*
...............*.*...*.***..*....*.*.*.*.**
......***.**.**...**..*......*............*
......**.**..*...*.......*..*.**............***
......***....*..*...*....****..................*
.**.**....****.....**......**...**........**..*
.**...*.....***.............*..*.*........*.*
*...*.***........................*..****..*
......*.**.......................*........*
......*...*..........................**
................................************
...............................**..........**
.
....................................*..*
.
.....................................**
....................................*..*
...................................******
....................................*..*
.....................................**
#P -43 39
............*............**
......*...***..........**.*.**
.....****.....***....*....*..****
....*...*.....***...**......*....*
..***.*.....*..**..**..*.......***
*..**..*.**.......**...*
*...*.*...**.......***.*.*........*
**....*.*.**.*.**..*.*.*.**....****.**
*..**.*....*.*..*....*.**..*...*..*.**
....**.*.**...*...**..***....***.*.*.*
..*..*............****.......**
....**............***....*.*..*
......................*.*
#P -104 72
.**.***.............**.**......***
.**....**.**......**.*...*...**.*
*..*.*....**....*....*....*.*...*.**
.......**.*.*..***...***...*****..*.*
...........**....*...*..*..**...*.*.***
...............*..*...***....*..*.*.*.*.***
...........*...*..*...*.*...***.*.*.*......*
...........*...*....*.*.*.*...*.*.*.*.**.**
.............**...............*.*.*.*.......**
.................................**.**..**..**
..................................*.**..*.**
...........................*....***..**.*.***..*
................*........**.*...***.........*.*
............***.***......**.*.*...*..*.*..*
...........*......**....*..**...*..........*
............**...*..*........*............*
......................***..*.*..**
......................*.****.****.*
....................*..*.*.*.*.*.*
#P -54 27
**
**
.
.
.
.
.
.
.
.
.***
*.*
*..*
*..*
.*.*
*..*
.**
.*
.
.
.
.
.
.
.
.
.
.
.
.
**
**
.
.
.
.
.
.
.
.
.
.
.*
..*
***
.
.
.
.
..**
..**
.
.
...**
...**
#P 21 -168
............*.......*...........................*.......*
...........****...****.........................****...****
..........*...**.**...*..........***..........*...**.**...*
..........*....*.*....*..........***..........*....*.*....*
........*.*.*.**.**.*.*.*.......*...*.......*.*.*.**.**.*.*.*
.......*......**.**......*.................*......**.**......*
......**.*...*.....*...*.**....*.....*....**.*...*.....*...*.**
....**.*.**...........**.*.*...**.*.**...*.*.**...........**.*.**
..**.*......................*...........*......................*.**
.*...*......................*...*...*...*......................*...*
..*.*.......................*....*.*....*.......................*.*
.............................*..*...*..*
...............................*.*.*.*
............................**.*..*..*.**
...........................*.*.*.***.*.*.*
...........................*.*..**.**..*.*
............................***..*.*..***
.............................*.**...**.*
...........................**...*...*...**
...........................*.*....*....*.*
.............................*..*.*.*..*
.............................*.***.***.*
.............................*.*.....*.*
..........................**.*.*..*..*.*.**
..........................**.*.*..*..*.*.**
.............................*.*.***.*.*
............................*..*******..*
..*.**.***.................................................***.**.*
.**.**....**.*................*.......*................*.**....**.**
*..*.*..*...***..................***..................***...*..*.*..*
.*.....*...*...*.............***.....***.............*...*...*.....*
..............**....***.....**.***.***.**.....***....**
..............**..**.*.........***.***.........*.**..**
...............**....*.**.........*.........**.*....**
....................*..*.*...**.......**...*.*..*
...............**.*..*.*.*.*.............*.*.*.*..*.**
...................*........*...........*........*
..........................*.*************.*
#P 44 -129
........*******
........*******
......*.........*
.....**.*.....*.**
....*....*...*....*
...*...............*
....**.*.......*.**
....**.*.......*.**
.......**.....**
....**.**.....**.**
....**.*.......*.**
......**.*...*.**
......**...*...**
........**...**
.........*...*
..........***
.
.
.**.**
.*..*
**.**...**...**......*
........**...**.....*
....................**
....................*.*
....................**
.
.
........**...**
........**...**
.
........**...**
........**...**
.
.
.
.
..........**
..........******
............**..*
..........*****.*
.........***...*
........*
........****
.......*...*
.......**.**
........*.......*.*
...............*..*
.........**.....*.*
#P 68 -126
..........................**
............***..........*.***
......***..**...*.....*.**...**.**
.....*.*.****...**...*.**.*..*..**
......**...*.**.....*...*......*..*
..***..*...*.....*..*...*..........*
.***..**...*.......*.**.**......*
*....*.*.*.*....*.....*.*.**.......***
.......*.**..*****..*.*.....*...**.*.**
*.*.**..*.**...*....*..*.*.**..*...*...*
...***..............***..**.***
.....*............*....***...*..*
.....*.............*...**.....*
#P 47 -73
..*...............***
.***..........***.***
*...*.......*
**.***..***.**.....**
...*.*.*....*.......*
....****.**...**...*
....****......*
.
...............*.*
................*
......*.**......*
....***.***
...*..*...*
...*......*
...*....**
.....*****
......**
.
.......*
.......*
.......*
#P 27 -72
.....*
.***.***
*......**
.**...*..*...*
...........****
...........*...*
.........*..*.*
..........*
#P 75 -63
............*............**
......*...***..........**.*.**
.....****.....***....*....*..****
....*...*.....***...**......*....*
..***.*.....*..**..**..*.......***
*..**..*.**.......**...*
*...*.*...**.......***.*.*........*
**....*.*.**.*.**..*.*.*.**....****.**
*..**.*....*.*..*....*.**..*...*..*.**
....**.*.**...*...**..***....***.*.*.*
..*..*............****.......**
....**............***....*.*..*
......................*.*
#P 62 -38
.......***
......*...**.*
.***..***...***
*.*.***....*...*
.*....*.......*
....**
#P 6 -29
...........**............*
........**.*.**..........***...*
.....****..*....*....***.....****
....*....*......**...***.....*...*
....***.......*..**..**..*.....*.***
..............*...**.......**.*..**..*
...*........*.*.***.......**...*.*...*
**.****....**.*.*.*..**.*.**.*.*....**
**.*..*...*..**.*....*..*.*....*.**..*
*.*.*.***....***..**...*...**.*.**
.......**.......****............*..*
.......*..*.*....***............**
.............*.*
#P 45 -22
...**
...**
..***
*.*
.
.
.....**
..**.*
...***
....*
#P 54 -26
.......***
......*...**.*
.***..***...***
*...***....*...*
.**...*.......*
....**
#P 109 -148
............*.......*...........................*.......*
...........****...****.........................****...****
..........*...**.**...*..........***..........*...**.**...*
..........*....*.*....*..........***..........*....*.*....*
........*.*.*.**.**.*.*.*.......*...*.......*.*.*.**.**.*.*.*
.......*......**.**......*.................*......**.**......*
......**.*...*.....*...*.**....*.....*....**.*...*.....*...*.**
....**.*.**...........**.*.*...**.*.**...*.*.**...........**.*.**
..**.*......................*...........*......................*.**
.*...*......................*...*...*...*......................*...*
..*.*.......................*....*.*....*.......................*.*
.............................*..*...*..*
...............................*.*.*.*
............................**.*..*..*.**
...........................*.*.*.***.*.*.*
...........................*.*..**.**..*.*
............................***..*.*..***
.............................*.**...**.*
...........................**...*...*...**
...........................*.*....*....*.*
.............................*..*.*.*..*
.............................*.***.***.*
.............................*.*.....*.*
..........................**.*.*..*..*.*.**
..........................**.*.*..*..*.*.**
.............................*.*.***.*.*
............................*..*******..*
..*.**.***.................................................***.**.*
.**.**....**.*................*.......*................*.**....**.**
*..*.*..*...***..................***..................***...*..*.*..*
.*.....*...*...*.............***.....***.............*...*...*.....*
..............**....***.....**.***.***.**.....***....**
..............**..**.*.........***.***.........*.**..**
...............**....*.**.........*.........**.*....**
....................*..*.*...**.......**...*.*..*
...............**.*..*.*.*.*.............*.*.*.*..*.**
...................*........*...........*........*
..........................*.*************.*
#P 156 -106
..........................**
............***..........*.***
......***..**...*.....*.**...**.**
.....*.*.****...**...*.**.*..*..**
......**...*.**.....*...*......*..*
..***..*...*.....*..*...*..........*
.***..**...*.......*.**.**......*
*....*.*.*.*....*.....*.*.**.......***
.......*.**..*****..*.*.....*...**.*.**
*.*.**..*.**...*....*..*.*.**..*...*...*
...***..............***..**.***
.....*............*....***...*..*
.....*.............*...**.....*
#P 132 -107
......*.........*
.....*.**.***.**.*
.....*.*.**.**.*.*
.....***.**.**.***
.........*...*
........**...**
.......**.....**
....***.*.....*.***
........***.***
.........**.**
..........***
...........*
.
....................*
.................**.*
.****
....*............***
*.**....**...**...****
.*......**...**......*
...................*.*
....................**
.....................**
.
.
........**...**
........**...**
.
........**...**
........**...**
.
.
.
.
.
.........**...*
........*.**..**
..........*....**
.
.
.........*..*
........***..**
.........*.*.**...*
......**....*.*....**
..........**.*.**
.........**.***.**
...........*****
...........*.*.*
..............*
.
..........**
#P 115 -52
.....*
.***.***
*......**
.**...*..*...*
...........****
...........*...*
.........*..*.*
..........*
#P 57 14
.**
...*
***
.*
#P 63 8
.......**.........**
....**.**.........**.**
....**...*.......*...**
***..*...............*..***
**..***.....***.....***..**
***.........***.........***
.*.........*...*.........*
..*..*...............*..*
.**.**....*.....*....**.**
.....*******.*.*******
....*.*.*.........*.*.*
#P 136 -53
.................***
***............**.*
*..*........***.*.**
*...*..***...**...*
.....*...*.**..**
.....*.....*
..*..*.......*...*
...*..........***
.
......*.*
.....**.*
...**....*
...*.*..***
...**.*.*
.....*
.
.
.
.....***
#P 163 -43
............*............**
......*...***..........**.*.**
.....****.....***....*....*..****
....*...*.....***...**......*....*
..***.*.....*..**..**..*.......***
*..**..*.**.......**...*
*...*.*...**.......***.*.*........*
**....*.*.**.*.**..*.*.*.**....****.**
*..**.*....*.*..*....*.**..*...*..*.**
....**.*.**...*...**..***....***.*.*.*
..*..*............****.......**
....**............***....*.*..*
......................*.*
#P 150 -18
.......***
......*...**.*
.***..***...***
*.*.***....*...*
.*....*.......*
....**
#P 134 -3
...***
...***
...**
..*
**..*
.*...*
.*..*
..***
#P 141 -1
...............*..........***
...........***.***......**.*..*...**.*
..........*......**......*.*.**.**.*..*
...........*.*.*...*..**.**..*.*...*..**..**.*
.................*.*..*.*...*...*.*.***.*.**.**
......**....**.....**.*.*.*...*.........*.*.*..*
.....*.**..**....**.*.*...*.****.......*......*
.....*.**..***.**...........*
.....**.*.*.*.*....*..***.*...*.*
.....*............*......*..**...**.**.***
.***............**.*..*.......*...*..**.**
*..................****....*...*..*....***
.*..**........**...**......**.....****....**.**
...*.*........*.*..*.............***.....*...**
.....*..****..*........................***.*...*
.....*........*.......................**.*
.........**..........................*...*
....************
...**..........**
.
.........**
.
.......******
#P 90 15
...........**............*
........**.*.**..........***...*
.....****..*....*....***.....****
....*....*......**...***.....*...*
....***.......*..**..**..*.....*.***
..............*...**.......**.*..**..*
...*........*.*.***.......**...*.*...*
**.****....**.*.*.*..**.*.**.*.*....**
**.*..*...*..**.*....*..*.*....*.**..*
*.*.*.***....***..**...*...**.*.**
.......**.......****............*..*
.......*..*.*....***............**
.............*.*
#P 141 48
..............***......**.**.............***.**
...............*.**...*...*.**......**.**....**
............**.*...*.*....*....*....**....*.*..*
...........*.*..*****...***...***..*.*.**
.........***.*.*...**..*..*...*....**
.....***.*.*.*.*..*....***...*..*
....*......*.*.*.***...*.*...*..*...*
.....**.**.*.*.*.*...*.*.*.*....*...*
..**.......*.*.*.*...............**
..**..**..**.**
....**.*..**.*
*..***.*.**..***....*
.*.*.........***...*.**........*
.....*..*.*..*...*.*.**......***.***
....*..........*...**..*....**......*
.....*............*........*..*...**
..............**..*.*..***
.............*.****.****.*
..............*.*.*.*.*.*..*
#P 134 26
...**
...**
.
.
.
.
.
.........*
.......**
........**
.
.
.
.
.
.
.
.
.
.**
.**
.
.
**
**
#P 124 63
.*
**
*.*
#P 101 71
.**
**
..*
#P 79 78
.*
**
*.*
#P 56 86
.**
**
..*

View File

@ -0,0 +1,285 @@
#Life 1.05
#D Some fuses and some fenceposts
#D Mostly by Al Hensel.
#N
#P -35 -12
*
.*
..*
...*
....*
.....*
......*
.......*
........*
.........*
#P -25 -5
......*
.....*
.....**
*..**
.*..*
..**
.
..**
..*
...*
....*
#P -18 -15
.........*
........*
.......*
......*
.....*
....*
...*
..*
.*
*
#P -8 -22
....**
.....*
....*
...*
..*
.*
*
#P -20 6
*
.*
..*
...*
....*
.....*
......*
.......*
#P -12 10
.....*
....*
....**
..**
*..*
.**
.
.**
.*
..*
#P -6 0
.........*
........*
.......*
......*
.....*
....*
...*
..*
.*
*
#P 4 -9
........*
.......*
......*
.....*
....*
...*
..*
.*
*
#P 13 -15
..*
.*
.**
.
.**
*..*
..**
....**
....*
.....*
#P -9 20
*
.*
..*
...*
....*
.....*
......*
.......*
........*
.........*
#P 1 30
*
.*
..*
...*
....*
.....*
......*
.......*
........*
#P 10 33
......*
.....*
.....**
...**
..*.*
..*
*.*
.*
#P 17 24
........*
.......*
......*
.....*
....*
...*
..*
.*
*
#P 26 17
....**
.....*
....*
...*
..*
.*
*
#P 19 -5
*
.*
..*
...*
....*
.....*
......*
.......*
#P 27 3
*...**
.*..*.*.**
..*.*.**.*
...*
#P 16 -25
.........*
........*
.......*
......*
.....*
....*
...*
..*
.*
*
#P 26 -31
..*
.*
.**
.
.**
*..*
..**
....**
....*
.....*
#P 32 -23
....*.....*.....*
...*.*...*.*...*.*
*..*..*..*..*..*..*
.*.*...*.*...*.*...*
..*.....*.....*.....*
#P 53 -18
*
.*
..*
...*
....*
.....*
**....*
*.*.*.*...*
...**.**.*.*
..........*
#P 29 -41
.........*
........*
.......*
......*
.....*
....*
...*
..*
.*
*
#P 39 -52
......**
.....*..*
.....*..*
...**....**
..*........*
...**....**
....*....*
...*......*
..*........*
.*..........*
*............*
#P 53 -41
*
.*
..*
...*
#P 57 -41
.....*
....*
....**
..**
*..*
.**
.
.**
.*
..*
#P 63 -50
........*.....*
.......*.*...*
......*..*..*
.....*...*.*
....*.....*
...*
..*
.*
*
#P 78 -57
..**
..*.*
....*
...*
..*
.*
*
#P 60 -31
*
.*
..*
...*
....*
.....*
......*
.......*
........*
.........*
#P 70 -21
*
.*
..*
...*
....*
.....*
......*
.......*
........*
#P 79 -12
*..**
.*..*
..**
.
****
*..*
.**

View File

@ -0,0 +1,18 @@
#Life 1.05
#D How 6 gliders can pass right through each other
#D
#D This is somewhat amazing, considering that even
#D 4-glider collisions have not all been explored.
#N
#P 3 -3
..*
**........*
.**...*..*
.....**..***
.....*.*
#P -13 0
....*.*
***..**
..*..*...**
.*........**
.........*

View File

@ -0,0 +1,61 @@
#Life 1.05
#D p104 r-pentomino shuttle gun
#D by Noam Elkies, March 1996.
#N
#P -4 1
**
.**
.*
#P -10 4
***
..*
#P -19 -9
.**
.**
.**
.*
*.*
*.**
.
.
.**
.**
#P -19 4
.**
*..*
*.*
.*.**
..***
...**
#P -10 -5
**
**
#P -2 8
.*
*.*
.*
#P 0 -8
.*
*.*
.*
#P 9 6
**
**
#P 15 -7
**
***
**.*
..*.*
.*..*
..**
#P 16 2
.**
.**
.**
.*
*.*
*.**
.
.
.**
.**

View File

@ -0,0 +1,78 @@
#Life 1.05
#D p132 glider gun, using only one p44 engine.
#D
#D p44 oscillator by David Buckingham.
#D Gun by Dean Hickerson, June 1996.
#N
#P -21 -1
.**
*.*
*.*.**
.*.*.*
...*
.*..*
....*
*...*
*...*
....*
.*..*
...*
.*.*.*
*.*.**
*.*
.**
#P -4 5
.**
*.*
*
*.*
.**
#P 3 5
**
*.*
..*
*.*
**
#P 17 -1
...**
...*.*
**.*.*
*.*.*
..*
.*..*
.*
.*...*
.*...*
.*
.*..*
..*
*.*.*
**.*.*
...*.*
...**
#P -4 21
**
**
#P 4 21
**
**
#P 11 -2
**
*.*
..*
..**
#P -8 -8
*
***
...*
..**
#P -7 -19
.*
..**
**
..*
#P 6 -22
..**
..*
*.*
**

View File

@ -0,0 +1,58 @@
#Life 1.05
#D p144 glider gun
#D Found by Bill Gosper, 7/22/94,
#D using an oscillator by Achim
#D Flammenkamp, Dean Hickerson,
#D and David Bell, combined with
#D a p72 oscillator by Bob
#D Wainwright. Same period as
#D GUNSTAR but much smaller.
#N
#P -29 -11
....**
****....**
***.**..**
.....*
#P -9 -11
.....*
***.**..**
****....**
....**
#P -22 -4
**
**
#P -8 -4
**
**
#P -12 -1
.***
*
*..*
.**
#P 1 2
..**
.*..*
*...*
...*
.***
.*
#P -2 8
***
#P 10 -1
...*
.***
.*
*...*
*..*
.**
#P 15 -2
***
#P 20 -6
**
**
#P 20 11
**
**
#P -6 11
**
**

View File

@ -0,0 +1,37 @@
#Life 1.05
#D p184 gun using a single b-heptomino.
#D
#D Since 184 is a multiple of 46, this
#D gun is perfect for p46 glider logic.
#D David Buckingham, July 1996.
#N
#P -3 -19
...*
.***
*
**
#P 8 -15
...*
.***
*
**
#P -7 0
.***
*..*
**..*
...**
#P -19 -3
..**
.*.*
.*
**
#P -15 8
..**
.*.*
.*
**
#P -4 13
**
*
.***
...*

View File

@ -0,0 +1,42 @@
#Life 1.05
#D p246 gun, using a single bookend-based engine
#D
#D by David Buckingham, June 1996
#N
#P 10 -21
.....**
.....*..*
.
.
.....*.**
**..*.*
*....*
....*
.*..*
#P 16 3
**
*.*
..*
..**
#P -23 0
..**
.*.*
.*
**
#P -17 13
...*
..*.****
.*.*.***
*.*
.*
.**
.**
.**
#P -11 -8
**
**
#P 1 -5
.**
..*
*.*
**

View File

@ -0,0 +1,39 @@
#Life 1.05
#D p30 glider gun (the Original)
#D
#D This is made of two of a pattern
#D know as the "queen bee", which
#D sometimes occurs naturally,
#D whose debris can be deleted on
#D the sides by blocks or eaters.
#D But a collision in the center
#D can, as seen here, miraculously
#D form a glider. Just one of these
#D moving back and forth is called
#D piston (see the p30 in OSCSPN2).
#N
#P 4 -5
....*
.****
****
*..*
****
.****
....*
#P 13 -4
*
*
#P -6 -3
..*
.*.*
*...**
*...**
*...**
.*.*
..*
#P 17 -2
**
**
#P -17 0
**
**

View File

@ -0,0 +1,74 @@
#Life 1.05
#D Single-engine p44 glider gun
#D Found by David Buckingham, Oct 1996
#N
#P -15 -13
**
.*
.*.*
..**
#P 1 -20
..**
..*
*.*
**
#P 3 -13
**
**
#P 6 -10
...*
.***
*
**
#P -21 -3
.**
*.*
*.*.**
.*.*.*
...*
..*..*
..*
..*...*
..*...*
..*
..*..*
...*
.*.*.*
*.*.**
*.*
.**
#P -4 3
..*
.**
*
.**
..*
#P 3 3
*
**
..*
**
*
#P 16 -3
....**
....*.*
.**.*.*
.*.*.*
...*
.*..*
....*
*...*
*...*
....*
.*..*
...*
.*.*.*
.**.*.*
....*.*
....**
#P -4 19
**
**
#P 4 19
**
**

View File

@ -0,0 +1,38 @@
#Life 1.05
#D p46 glider gun
#D Based on two shuttles which
#D make use of a double
#D B-heptomino reaction. See
#D the p46 piston in OSCSPN2.
#N
#P 2 -17
**
**
#P -6 -8
..*
.***
**.*
#P 1 -8
.*
***
*.**
#P -25 4
..*
..**
*.***
....**
...**
...*
.
...*
...**
....**
*.***
..**
..*
#P -36 6
**
**
#P -9 13
**
**

View File

@ -0,0 +1,125 @@
#Life 1.05
#D p112 gun, using a B track
#D By Dave Buckingham, 7/5/96.
#N
#P -30 -29
*
***
...*
..**
#P -27 -23
**
**
#P -15 -31
...*
.***
*
**
#P -11 -15
**
*
..*
.**
#P -14 -11
**
*
.***
...*
#P 25 -30
..**
..*
*.*
**
#P 21 -27
**
**
#P 27 -15
**
*.*
..*
..**
#P 11 -11
..**
*..*
**
#P 7 -14
..**
.*.*
.*
**
#P 26 25
**
*
.***
...*
#P 25 21
**
**
#P 11 27
..**
...*
***
*
#P 8 11
**
*
..*
.**
#P 10 7
*
***
...*
..**
#P -29 26
..**
.*.*
.*
**
#P -23 25
**
**
#P -31 11
**
.*
.*.*
..**
#P -15 8
..**
*..*
**
#P -11 10
..**
..*
*.*
**
#P -11 -23
**
.**
.*
#P 20 -11
..*
***
.*
#P 8 20
.*
**
.**
#P -23 8
.*
***
*
#P -1 -32
**
.*
.*.*
..**
#P 28 -1
...*
.***
*
**
#P -3 28
**
*.*
..*
..**

View File

@ -0,0 +1,59 @@
#Life 1.05
#D p256 gun, using a B track
#D By David Buckingham, 9/29/95.
#D Based on an idea by Mark Niemec.
#D See also BTRACK, SLR.
#N
#P 16 7
.......**
.......**
.
.
.
..**
..**
......**
......**
.
.
**
**
#P 7 -24
**
**.....**
.......**
.
.
.....**
.....**
...........**
...........**
#P -24 -19
.......**
.......**
.
.
.**
.**
.....**
.....**
.
.
.
**
**
#P -19 16
**
**
......**
......**
.
.
....**
....**.....**
...........**
#P 0 9
*
***
*.*
..*

View File

@ -0,0 +1,135 @@
#Life 1.05
#D p856 gun, using a B track
#N
#P 22 13
.*
***
*.**
#P 23 2
**
**
#P 4 -9
..**
..**
.
...*
..*.*
.*..*
*..*
.
*..*
..**
#P 42 -13
...**
...*
..**..***
..*...*.***
..**.*....*
....*.*
*....*.**
***.*...*
..***..**
.......*
......**
#P 28 -34
...*
.***
*
**
#P 2 -24
**
**
#P -9 -8
.****
*.......**
*...**..**
.*..**
#P -12 -51
.*.*..*
.***.*.**
*......*
.*.....**
.
**.....*
.*......*
**.*.***
..*..*.*
#P -34 -31
**
.*
.*.*
..**
#P -24 -3
**
**
#P -9 0
..**
..**
.
...*
..*.*
.*..*
*..*
.
*..*
..**
#P -51 4
**.******
**.******
**
**.....**
**.....**
**.....**
.......**
******.**
******.**
#P -31 31
..**
...*
***
*
#P -3 23
**
**
#P 0 5
.****
*.......**
*...**..**
.*..**
#P 2 41
.......**
......****
..*.**.**.*
.*..**
***..**..**
***..*.****
.*..*...*..*
..****.*..***
..**..**..***
.......**..*
..*.**.**.*
...****
....**
#P 31 28
**
*.*
..*
..**
#P 20 19
**
**
#P -7 32
..**
...*
***
*
#P 32 4
**
*.*
..*
..**
#P 4 -35
...*
.***
*
**

View File

@ -0,0 +1,443 @@
#Life 1.05
#D 4-barrelled p144 gun
#D This is a p144 gun based on an unnamed p72 oscillator found by
#D Bob Wainwright. Two copies of the p72 together with a blocker and
#D 2 eaters can duplicate a glider. One output glider emerges in the
#D same direction as the original; the other is turned 90 degrees.
#D By putting together 4 such reflectors, a 4-barrelled gun can be
#D built with period 144+72N for any N>=0.
#D This was built by David Buckingham some time before 11/21/91.
#D (This header written by Dean Hickerson, 1/25/93)
#N
#P -36 -75
.**
.**
.**
.*
*.*
*.**
.
.
.**
.**
#P -36 -55
.**
.**
.**
..*
.*.*
**.*
.
.
.**
.**
#P -29 -68
**
**
#P -25 -63
**
*.*
*
#P -29 -59
.....**
.*...*..*
*..*.***
***.*
.*.***
.......*
#P -20 -50
***
*
.*
#P -11 -53
**
**
#P -15 -64
*
***
...*
..**
#P 3 -61
.*
**
*.*
#P 10 -64
..**
..*
*.*
**
#P 14 -61
..**
..**
.
...*
..*.*
.*..*
*..*
.
*..*
..**
#P -4 -44
..**
...*
***
*
#P 7 -43
**
**
#P 5 -33
....**
**..**..**
*.*..*..**
.***
..**
#P 12 -38
**
**
#P 17 -46
.......***
.
...***.*..*
.*.***
*......***
**
.
...**
......**
....*.*
.....*
#P 25 -34
..**
.***
*.*..*..**
**..**..**
....**
#P 44 -36
....*
**..**.***
**....****
....**
#P 64 -36
....**
**....****
**..**.***
....*
#P 65 -29
**
**
#P 59 -25
***
..*
.*
#P 52 -29
..**
.**.*
..*
.*.*
.**
.*.***
...*.*
*..*
....*
#P 46 -20
.**
*.*
..*
#P 59 -15
..**
..*
*.*
**
#P 50 -11
**
**
#P 39 -4
**
.*
.*.*
..**
#P 57 3
**
.**
*
#P 59 10
**
*
.***
...*
#P 50 14
.*.*
....*
*....*..**
**.*..*.**
....**
#P 40 7
**
**
#P 35 12
**
**
#P 27 5
..**
.*.*
***
**
...**
..***
.
.
..**
..**
#P 39 17
**
*.*
.
..**
..**
..**
.
.*.*.*
.*...*
.*...*
...*
#P 34 20
...*
.*.*
*
.**
..*
#P 28 25
.**
.*.*
..***
...**
**
***
.
.
.**
.**
#P 31 44
.**
.**
.
.
*.**
*.*
.*
.**
.**
.**
#P 31 64
.**
.**
.
.
**.*
.*.*
..*
.**
.**
.**
#P 26 65
**
**
#P 19 52
.*
...***.*
....*.***
.***.*..*
*..*...*
..**
.
....*
..*.*
...**
#P 16 46
.*
..*
***
#P 10 59
**
*
.***
...*
#P 8 50
**
**
#P -1 39
...*
.***
*
**
#P -16 27
......**
......***
**..*..*.*
**..**..**
....**
#P -15 35
**
**
#P -10 40
**
**
#P -7 57
*.*
.**
.*
#P -15 59
..**
.*.*
.*
**
#P -20 50
.**
.*..*
.
.*..*
*..*
*.*
.*
.
.**
.**
#P -29 34
.....*
....*.*
...**
......**
.
.........**
.***......*
.....***.*
*..*.***
.
.***
#P -36 28
....**
**..**..**
**..*..*.*
......***
......**
#P -55 31
....**
****....**
***.**..**
.....*
#P -75 31
.....*
***.**..**
****....**
....**
#P -68 26
**
**
#P -63 21
.*
*
***
#P -59 19
.*
..*..*
*.*
***.*
...**
..*.*
...*
.*.**
..**
#P -50 16
*
*.*
**
#P -64 10
..**
.*.*
.*
**
#P -53 8
**
**
#P -44 -1
**
*.*
..*
..**
#P -61 -7
..*
**
.**
#P -64 -15
*
***
...*
..**
#P -61 -20
....**
**.*..*.**
**..*....*
.....*
......*.*
#P -43 -10
**
**
#P -38 -15
**
**
#P -33 -16
.**
.**
.
.
***
**
...**
..***
.*.*
.**
#P -46 -29
..*
*...*
*...*
*.*.*
.
..**
..**
..**
.
...*.*
....**
#P -39 -26
.*
.**
...*
*.*
*
#P -34 -36
..**
..**
.
.
..***
...**
**
***
.*.*
..**
#P -14 -20
*
*.*
**
#P 16 -14
***
*
.*
#P 10 16
.**
*.*
..*
#P -20 10
.*
..*
***

View File

@ -0,0 +1,241 @@
#Life 1.05
#D David Buckingham's p168 glider gun
#D A 4-barrelled, period 168 glider gun, using 4 B-heptominoes moving
#D around a p840 track consisting of 4 64 gen turns and 8 73 gen turns.
#D Built by David Buckingham sometime before 11/20/91
#N
#P -20 -53
....**
.*.*..*.**
**..*....*
.....*......**
......*.....*
#P 3 -42
**
.*
#P 12 -60
...*
.***
*
**
#P 15 -56
..**
..*
*.*
**
#P 16 -47
.**
*..*
*
*
*.*
..**
.
.
.**
..*
#P 8 -35
.***
.*
***
#P 28 -38
....*...*
**..**...*
.*.......*
.....****
#P 47 -20
..**
...*
.
.
...*
.*.**
.*
.*
.*..*
..**
.
.
**
.*
#P 43 1
...**
**..*
*..*
.***
#P 55 12
**
*.*
..*
..**
#P 51 15
**
*
.***
...*
#P 36 16
....**
**.*..*.**
*....*..*
....*
...*
#P 33 28
.**
.*
.
.*..*
*..*
*.*
.*
.
.**
.*
#P 12 30
.*
**
#P 14 38
.*
**
#P 5 47
.*
**
#P 9 48
....**
.*.*..*.**
**..*....*
.....*
......*
#P -20 51
..**
.*.*
.*
**
#P -17 55
..**
...*
***
*
#P -21 30
..*
..**
.
.
.
.
.**
*..*
*
*
*.*
..**
.
.
.*
.**
#P -39 33
....*...*
*...**...*
**.......*
.....****
#P 7 39
..*
.**
**
.**
#P -36 17
.**...*
.**.**.**
.*.......*
**......*
.**..**
.**...*
#P -53 9
.*
.**
.
.
..*
*.**
*
*
*..*
.**
#P -50 5
*
**
#P -60 -17
**
.*
.*.*
..**
#P -56 -20
*
***
...*
..**
#P -47 -21
....**
**.*..*.**
*....*..*
....*
...*
#P -38 -39
.**
.*
.
.*..*
*..*
*.*
.*
.
.**
.*
#P -33 -19
**
*
#P -24 -18
.***
.*..*
.....*
..*..*
..**
..**
*.**
***
.*
#P -14 -19
.*
**.*
....*
.*
..*.**
....*
#P 10 -16
......**
.
.....*...*
....*....*
...*.*.*
..*.*.*
*....*
*...*
.
..**
#P 6 11
.***
*
*...*
*..*.*
..*.*..*
...*...*
.......*
....***
#P -20 6
.....*
....*.*
...*...*
..*...*
.*...*
*...*
.*.*
..*

View File

@ -0,0 +1,401 @@
#Life 1.05
#D 4-barrelled p216 gun
#D Notice the similarity to
#D GUNSTAR, which has a
#D period of 144.
#N
#P -35 -74
.**
.**
.**
.*
*.*
*.**
.
.
.**
.**
#P -28 -67
**
**
#P -26 -64
.**
*.**
...*
#P -35 -54
.**
.**
.**
..*
.*.*
**.*
.
.
.**
.**
#P -29 -56
...**
..***
..***.**
*****.**
....*.*
....***
#P -21 -51
***
*
.*
#P -14 -63
*
***
...*
..**
#P -10 -52
**
**
#P -3 -43
..**
...*
***
*
#P 11 -63
..**
..*
*.*
**
#P 15 -60
..**
..**
.
...*
..*.*
.*..*
*..*
.
*..*
..**
#P 3 -35
*
*.*
**
#P 6 -32
....**
**..**..**
*.*..*..**
.***
..**
#P 13 -37
**
**
#P 18 -43
.....*
....*.*
*.***
*..*.*
**
#P 25 -41
.**
.**
***
*
.*
**
*
#P 26 -33
..**
.***
*.*..*..**
**..**..**
....**
#P 45 -35
....*
**..**.***
**....****
....**
#P 65 -35
....**
**....****
**..**.***
....*
#P 62 -26
.*
..*
.**
**
#P 66 -28
**
**
#P 49 -21
.**
*.*
..*
#P 51 -29
..*
..*
..***
..****
******
*
****
..**
#P 60 -14
..**
..*
*.*
**
#P 51 -10
**
**
#P 40 -3
**
.*
.*.*
..**
#P 60 11
**
*
.***
...*
#P 51 15
.*.*
....*
*....*..**
**.*..*.**
....**
#P 33 3
***
*
.*
#P 28 6
..**
.*.*
***
**
...**
..***
.
.
..**
..**
#P 36 13
**
**
#P 39 18
***
*
..*
.**
..**
.*..*
...*
#P 35 25
**.**
.**.***
....***
#P 29 26
.**
.*.*
..***
...**
**
***
.
.
.**
.**
#P 32 45
.**
.**
.
.
*.**
*.*
.*
.**
.**
.**
#P 22 51
.***
.*.*
**.*****
**.***
...***
...**
#P 19 49
.*
..*
***
#P 32 65
.**
.**
.
.
**.*
.*.*
..*
.**
.**
.**
#P 27 66
**
**
#P 23 62
*
**.*
.**
#P 11 60
**
*
.***
...*
#P 9 51
**
**
#P 0 40
...*
.***
*
**
#P -5 33
.**
*.*
..*
#P -15 28
......**
......***
**..*..*.*
**..**..**
....**
#P -14 36
**
**
#P -19 51
.**
.*..*
.
.*..*
*..*
*.*
.*
.
.**
.**
#P -14 60
..**
.*.*
.*
**
#P -24 39
.....**
.*.*..*
..***.*
*.*
.*
#P -27 35
..*
.**
.*
..*
***
**
**
#P -35 29
....**
**..**..**
**..*..*.*
......***
......**
#P -54 32
....**
****....**
***.**..**
.....*
#P -74 32
.....*
***.**..**
****....**
....**
#P -67 27
**
**
#P -64 23
.**
**
*
.*
#P -56 22
..**
..****
.....*
******
****
.***
...*
...*
#P -51 19
*
*.*
**
#P -63 11
..**
.*.*
.*
**
#P -52 9
**
**
#P -43 0
**
*.*
..*
..**
#P -35 -5
.*
..*
***
#P -32 -15
.**
.**
.
.
***
**
...**
..***
.*.*
.**
#P -37 -14
**
**
#P -63 -14
*
***
...*
..**
#P -60 -19
....**
**.*..*.**
**..*....*
.....*
......*.*
#P -43 -27
..***
..***.**
....**.**
.*
*..*
.**
..**
..*
....*
..***
#P -33 -35
..**
..**
.
.
..***
...**
**
***
.*.*
..**

View File

@ -0,0 +1,430 @@
#Life 1.05
#D Hacksaw (orthogonal sawtooth with expansion factor 9)
#D Population is unbounded but does not tend to infinity. Its graph is a
#D sawtooth function with ever-increasing teeth. More specifically, the
#D population in generation t = 385*9^n - 189 (n>=1), is t/4 + 1079, but the
#D population in generation 1155*9^n - 179 (n>=0) is only 977.
#D
#D The pattern consists of two parts, a stationary shotgun and a set
#D of puffers moving east. The shotgun produces, and usually destroys, a salvo
#D consisting of a MWSS and 2 LWSSs. The moving part consists of a period 8
#D blinker puffer (found by Bob Wainwright), and two p24 glider puffers, whose
#D output gliders destroy each other (with help from an accompanying MWSS). In
#D generation 385*9^n - 189 (n>=1) (and 228 for n=0), a salvo hits the back end
#D of the row of blinkers, causing it to decay at 2c/3. When the row is
#D completely gone, a new row starts to form and a spark is produced. The spark
#D is turned into a glider by an accompanying HWSS; the glider is turned into a
#D westward LWSS, in generation 1155*9^n - 127 (n>=0), by interaction with the
#D glider puffers. (This 3 glider synthesis of a LWSS is due to David
#D Buckingham.) When the LWSS hits the shotgun, in generation 2310*9^n - 184
#D (n>=0), another salvo is released, starting the cycle again.
#D
#D The idea for this sawtooth pattern was suggested by Bill Gosper.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 7/8/92
#N
#P 82 -28
....*
.....*
*....*
.*****
.
.
.
...**
***.**
.****
..**
#P 77 -19
***
#P 79 -15
.....*
......*
*.....*
.******
#P 94 8
...*
....*
*...*
.****
.
.
.
.****
*...*
....*
...*
#P 88 12
..***
**.**
..***
#P 84 14
***
#P 80 5
....**
****.**
******
.****
#P 80 20
.******
*.....*
......*
.....*
#P 71 17
.**
****
**.**
..**
.
.
.
..**
**.**
****
.**
#P 67 21
..*
*.*
..*
#P 58 12
.****
*...*
....*
...*
#P 57 -3
.....*
......*
*.....*
.******
#P 34 9
.*****
*....*
.....*
....*
#P 60 29
.******
*.....*
......*
.....*
#P 76 41
**
.*
#P 65 39
...*
..**
.**
***
.**
..**
...*
#P 47 41
....*
..*.*
.*.*
*..*
.*.*
..*.*
....*
#P 44 46
**
.*
#P 35 44
....**
....*
.**
***
.**
....*
....**
#P 25 42
*
*.*
...**
...**
...**
*.*
*
#P 14 44
**
*
#P 35 26
.**
*..*
...*
...*
**.*
.*
.
.
..*
.**
#P 37 40
*
**
#P 48 32
.**
**
..*
#P 52 32
*..*
....*
*...*
.****
#P 17 25
**
.*
#P 7 23
..**
.*
*
*
*
.*
..**
#P -11 25
....*
..*.*
**
**
**
..*.*
....*
#P -22 22
*
**
.**
.***
.**
**
*
#P -38 20
....**
...***
*.**
*..*
*.**
...***
....**
#P -45 22
**
*
#P -6 21
.*
**
#P -6 7
.*
.**
.
.*
*.*
*..*
.*..*
.
.*
.**
#P -13 -11
.....*
***.**...*
****....**
....**
#P -19 -6
..**
.*.*
***
**
...**
..***
.
.
...*
..**
#P -21 9
.*
**
#P -36 7
....*
..*.*
.*.*
*..*
.*.*
..*.*
....*
#P -40 10
**
*
#P -46 5
...*
..**
.**
***
.**
..**
...*
#P -55 7
**
*
#P 15 -33
..**
..*
*.*
**
#P 14 -44
.*
**
#P 2 -47
**
..*
...*
...*
...*
..*
**
#P -1 -46
*
**
#P -9 -49
*
*.*
...**
...**
...**
*.*
*
#P -25 -46
...*
..**
.**
***
.**
..**
...*
#P -26 -37
**
*
#P -39 -44
**
***
..**.*
..*..*
..**.*
***
**
#P -48 -46
**
.*
.*.*
..**
#P -45 -37
**
*.*
..*
..**
#P -53 -42
*
****
.****
.*..*
.****
****
*
#P -69 -44
...**
..*.*
.***
***
.***
..*.*
...**
#P -77 -42
**
*
#P -61 -40
*.*
**
.*
#P -61 -33
.**.........**
*..*.......*..*
***.........***
...*********
..*..*****..*
..**..***..**
#P -83 -51
**
.*
#P -86 -40
..***
.*...*
*.....*
.*...*
..***
..***
#P -88 -30
..***
.**.**
.**.**
.*****
**...**
#P -100 -11
**
*
#P -94 -13
...*.*
.*...*
.*
*
.*
.*...*
...*.*
#P -77 -11
**
*..*
....*
....*
....*
*..*
**
#P -66 -9
.*
**
#P -85 -17
*
**
#P -83 -11
.**
*.*
..*
#P -24 -13
**
.*
#P -36 -15
...**
..*.*
.***
***
.***
..*.*
...**
#P -48 -13
*
****
.****
.*..*
.****
****
*
#P -58 -10
*
**
#P -35 -6
**
*
#P -44 -23
....*
.....*
*....*
.*****
#P -57 -25
...*
....*
*...*
.****

View File

@ -0,0 +1,22 @@
#Life 1.05
#R 23/36
#P 2 -9
...**
...**
...*.**
...*.*
...***
....*
.***
*.*
.**
....**
.**
*.*
.***
....*
...***
...*.*
...*.**
...**
...**

View File

@ -0,0 +1,24 @@
#Life 1.05
#R 23/36
#P -21 4
..........*..........*
......*.**.**.*.....**
.....**.......**...***
......**.*.*.*.*..**
....***.......*.*.*..*
......*.........*.*.*
.***............***.*
.*................*
.
**................**
#P 1 4
..........*
*.....*.**.**.*
**...**.......**
.**..*.*.*.*.**
..*.*.*.......***
*.*.*.........*
*.***............***
..*................*
.
.**................**

View File

@ -0,0 +1,58 @@
#Life 1.05
#R 23/36
#P -45 -52
**
.*
.*.*
..**
#P 46 -50
..**
..*
*.*
**
#P -50 -43
*
***
...*
..**
#P -22 -33
.***
*
*
*
#P -32 -21
..**
...**
*.**
***
.*
#P 7 -16
***
*..*
*...*
.*..*
..***
#P 9 -2
...*
...*
...*
***
#P -15 8
.***
*...*
*....*
*..*..*
.*....*
..*...*
...***
#P 0 11
...*
..***
.**.*
**
.**
#P -48 48
..**
...*
***
*

View File

@ -0,0 +1,11 @@
#Life 1.05
#R 23/36
#P 7 4
.***
*
*
*
#P 16 7
*
*
*

View File

@ -0,0 +1,74 @@
#Life 1.05
#R 23/36
#P -17 -25
....*
....**
..**.**
..*....*
**......*
.**.....**
..*......**
...*....*
....**.**
.....**
......*
#P 11 -23
..***
.*..*
*...*
*..*
***
#P -33 -9
....*
....**
..**.**
..*....*
**......*
.**.....**
..*......**
...*....*
....**.**
.....**
......*
.
....***
...*..*
..*...*
..*..*
..***
#P 23 -7
......***
.....*..*
....*...*
....*..*
....***
.
....*
....**
..**.**
..*....*
**......*
.**.....**
..*......**
...*....*
....**.**
.....**
......*
#P 7 15
....*
....**
..**.**
..*....*
**......*
.**.....**
..*......**
...*....*
....**.**
.....**
......*
#P -15 19
..***
.*..*
*...*
*..*
***

View File

@ -0,0 +1,36 @@
#Life 1.05
#R 23/36
#P -61 -54
**
.*
.*.*
..**
#P -39 -36
..***
.*..*
*...*
*..*
***
#P -7 -4
..***
.*..*
*...*
*..*
***
#P 2 0
..***
.*..*
*...*
*..*
***
#P 34 32
..***
.*..*
*...*
*..*
***
#P 57 51
**
*.*
..*
..**

View File

@ -0,0 +1,192 @@
#Life 1.05
#R 23/36
#P -7 -42
*
***
...*
..**
#P 17 -38
*
***
...*
..*
..*...*
.
.....*
.
....*.*
.
.....*
.....*
...**.**
.....*
#P -5 -33
..***
..*.*
..*.*
..***
.
.*...*
.....*
....*
........**
*........*
.**......*.*
..........**
#P -21 -29
**
.*
.*.*
..**
#P 33 -27
......*
....***
...*
...**
.
.
***
*.*
***
.
***
***
.*
#P -14 -26
..*
**.*
*...*
**.*
..*
#P 13 -22
.*..*
*...*
*..*.*
*...*
.*..*
.
.....*.*
.....**
......*
#P 49 -13
..**
..*
*.*
**
#P -15 -12
..*
**
.**
#P -12 -11
.....*
...***
..*
..**.......***.**
...........*.*.***
...........***.**
.......**
......*.*
**....*
.*...**
*.......................*
.
*.......................*
..................**...*.*
..................*....***
................*.*
................**
........**.***
.......***.*.*
........**.***.......**
......................*
...................***...**
...................*......**
.........................*
#P 40 -9
...**
*.*.*
...**
#P -13 -3
*
*
#P -44 7
**
*.*.*
**
#P -52 10
..**
.*.*
.*
**
#P -35 15
.*
***
***
.
***
*.*
***
#P -24 14
.....*
.....**
....*.*
.
.......*..*
.......*...*
......*.*..*
.......*...*
.......*..*
.
.
..*
**.**
..*
..*
.
.*.*
.
..*
.
.*...*
.....*
....*
.....***
.......*
#P -6 22
**
*.*
..*
..**
#P 0 23
...**
.....*
.
.*
*
*...*
.
.***
.*.*
.*.*
.***
#P 10 22
..*
.*.**
*...*
.*.**
..*
#P -39 24
..**
...*
***
*
#P 18 26
**
*.*
..*
..**
#P 4 39
**
*
.***
...*

View File

@ -0,0 +1,421 @@
#Life 1.05
#R 23/36
#P 3 -38
.....**
.....*
...*.*
...**
**
#P 1 -33
.*.*
.*
**
#P 15 -40
.....**
.....*
..**.*
.*..*
.*
...*
*..*
#P 13 -33
.*.**
.*
**
#P 25 -38
..****
..*..*
***..***
*......*
*......*
#P 25 -33
***..***
..*..*
..****
#P -30 -35
.....*
.*.**
*.*
.*
.....*
#P -24 -34
*.**
*.**
*
*
#P -17 -35
....*
....***
...*.*
***.*
#P -9 -34
..*.***
.*.*
***
..*
#P -18 -20
.*
*.*
#P -19 -17
**...*
*.....*
...*.*
..**
#P 52 -21
***
.***..*
.....*
.....*
.....*
.***..*
***
#P 61 -21
....***
*..***
.*
.*
.*
*..***
....***
#P -28 -19
..*.*
.....*
.*..*
*.*.*
#P -28 -15
*..*
.**
#P -9 -18
**
.*.*
.**
.*.*
**
#P -5 -18
.**
.*
**
.*
.**
#P 1 -17
**
**.**
.*..*
.**.**
#P 7 -17
....**
.**.**
.*..*
**.**
#P 16 -19
..**.**..**
*..*.*..***
**....*****
....**
...*..*
....**
#P 27 -19
**..**.**
***..*.*..*
*****....**
.....**
....*..*
.....**
#P 33 -8
..*...*
.*.*.*.*
*..*.*..*
.**...**
..*.*.*
#P 33 -3
.***.***
*.......*
*.**.**.*
.*.*.*.*
#P 6 -7
.......**
.......**
.
.....****
....*....*
...*.*.**.*.**
...*.*....*.**
**.*....*.*
#P 6 1
**.*.**.*.*
....*....*
.....****
.
.....**
.....**
#P -46 -3
......**
.....*.*
**...*
*..*.**
.***
#P -44 2
....***
.**.*..*
..*...**
*.*
**
#P -27 -2
***
***
#P -23 0
***
***
#P -10 -2
*.*.**
******
#P -10 2
.
.
#P 14 11
...**
...**......**
...........**.*
.****.......*
*....*......**
*..*.*
*..*.*.**
*.*..*.**
.****
.
.**
.**
#P 29 7
......***
...**.**
...**.**
....*
.
.
*...*
*..**.****.**
****.**..*..*
.....*...**.**
............**
.
.....*
..**.**
..**.**
.***
#P 60 7
*.*
#P 61 8
**
*
#P 66 6
**
.*
#P 67 8
*.*
.**
#P 86 6
**
*
#P 84 8
*.*
**
#P 78 10
**
#P 77 11
*.*
.**
#P -27 12
**
.*
.*.*
..*.*
....**.**
#P -28 17
........**
..**
...*
***
*
#P -16 12
*
***
...*
..*..........**
..*..*.......**
.....*
...*.*
...**..**
.......*.*
.........*
.........**
#P 0 11
...**
...**
.
.****
*....*.....**
**...*.....**
*..*.*.**
*.*..*.**
.****
.
.**
.**
#P 63 16
**
#P 61 17
.*.*
.*
**
#P -67 18
***
*..*
#P -67 20
*...*
.*..*
..***
#P -52 18
.***
*..*
#P -53 20
*...*
*..*
***
#P 71 17
**.*
**.***
......*
**.**.*
.*.*.*
#P 72 22
*..*
.**
#P -72 29
...*
..*.*
**
#P -70 32
*.*
.*
#P -48 29
.*
*.*
...**
#P -48 32
*.*
.*
#P -33 37
....*
....*.*
.*..**
***
#P -34 41
**.**
.***
..*..**
.....*.*
.....*
#P -19 37
..*
*.*
.**..*
....***
#P -19 41
...**.**
....***
.**..*
*.*
..*
#P -67 40
..***
.*..*
*...*
#P -67 43
*..*
***
#P -53 40
***
*..*
*...*
#P -52 43
*..*
.***
#P -4 38
**
.*
.*.*
..**
.
.....***
.
..**
.*.*
.*
**
#P 4 38
......**
......*
....*.*
....**
.
***
.
....**
....*.*
......*
......**
#P 15 38
**
.*
.*.*
..**
.
.....******
#P 15 45
..**
.*.*
.*
**
#P 28 38
.........**
.........*
.......*.*
.......**
.
******
#P 35 45
**
*.*
..*
..**
#P 61 39
*
***........**
...*.......*
..*......*.*
..*...*..**
.......*
....*..*
#P 60 46
......***
.
..**
.*.*.....**
.*.......*
**........***
............*
#P -28 53
...**
.*
.*
.*
..*
*.*
**
#P -23 54
.*
.*
.*
*
*.*
.**

View File

@ -0,0 +1,153 @@
#Life 1.05
#R 23/36
#D Line Puffer, analogous to the one in regular life.
#P -1 1
.....*
.....*.*.*.***
.....*.*..*..***
.....*....*.*...*
.....*...*..**...*
.....*.*..**.*...*
.....*...*..**...*
.....*....*.*...*
.....*.*..*..***
.....*.*.*.***
.....*
.....*
....*....**.***
......*....*..**
......*.**..*..**
.........****..***
....*.*.**......*
......*..**....*
...*..**..*....*
.....*...**...***
.*.*..**.*......*
..*..*.******...*
*..****..*.*...*
..*....**....**
.....*.*.***
......**..*
....*..*.**
.........**
.....*.**...**
........*....***
.....*.*.......*
.....*.*.....*.*
....***...*.*.*
..***.....*..*
.............*
.....*
...*.**....***
#P 0 38
.....**..***
****...*
...******.*
..**.......*
....**.**..*
....**...*..*
...**......**
...**
......*...*.*
......**....**
..*.*......**
*.*..*.*****
.*......*.*
.....***
.......*
........**
......*..**
...**.*...**
..........***
......*.*..*
......*...*
...**.**..*
....*.**.*
...**.*
........***
.........**
........***
.
.......*.*
.....*...*
.......***
.....*.*
.....*
....**
..***
..*
#P 0 -72
..*
..***
....**
.....*
.....*.*
.......***
.....*...*
.......*.*
.
........***
.........**
........***
...**.*
....*.**.*
...**.**..*
......*...*
......*.*..*
..........***
...**.*...**
......*..**
........**
.......*
.....***
.*......*.*
*.*..*.*****
..*.*......**
......**....**
......*...*.*
...**
...**......**
....**...*..*
....**.**..*
..**.......*
...******.*
****...*
.....**..***
..*.**....***
#P -1 -35
.....*
.............*
..***.....*..*
....***...*.*.*
.....*.*.....*.*
.....*.*.......*
........*....***
.....*.**...**
.........**
....*..*.**
......**..*
.....*.*.***
..*....**....**
*..****..*.*...*
..*..*.******...*
.*.*..**.*......*
.....*...**...***
...*..**..*....*
......*..**....*
....*.*.**......*
.........****..***
......*.**..*..**
......*....*..**
....*....**.***
.....*
.....*
.....*.*.*.***
.....*.*..*..***
.....*....*.*...*
.....*...*..**...*
.....*.*..**.*...*
.....*...*..**...*
.....*....*.*...*
.....*.*..*..***
.....*.*.*.***
.....*

View File

@ -0,0 +1,21 @@
#Life 1.05
#R 23/36
#P 11 0
..**
...**
*.**
***
.*
#P 21 4
*
*
*
#P 1 8
...*
..**
.*.*
***
#P 6 17
*
*
*

View File

@ -0,0 +1,27 @@
#Life 1.05
#R 23/36
#P 11 0
..***
.*..*
*...*
*..*
***...***
.....*..*
....*...*
....*..*
....***
.
.
.......*
.......*
.......*
#P 2 13
...*
..**
.*.*
***
.
......***
.....*.*
.....**....***
.....*

View File

@ -0,0 +1,20 @@
#Life 1.05
#R 23/36
#P 14 -20
***
*..*
*...*
.*..*
..***
#P 0 8
...*
..***
.*.***
***..**
.**...**
..**..***
...***.*
....***
.....*
#P 0 20
***

View File

@ -0,0 +1,16 @@
#Life 1.05
#R 23/36
#P -17 -17
.***
*
*
*
#P -4 -10
*
*
*
#P 13 13
...*
..**
.*.*
***

View File

@ -0,0 +1,733 @@
#Life 1.05
#D Infinite glider hotel
#D The name is derived from the old mathematical "infinity hotel"
#D scenario, where a hotel with an infinite number of rooms always has
#D room for more guests by shuffling the old guests around.
#D Here two pairs of double Corderships are pulling slowly apart at
#D c/12 such that there is an ever-lengthening glider track between
#D them. Every 1920 generations another glider is injected into the
#D glider track, joining the gliders already circulating there.
#D Eventually an arbitrarily large number of gliders will be traveling
#D around the track.
#D The tricky bit to this construction is that even though all the
#D previously injected gliders are repeatedly flying through the
#D injection point, that point is guaranteed to be empty when it is
#D time for the next glider to be injected!
#D David Bell, dbell@pdact.pd.necisa.oz.au, Oct 9 1992
#N
#P 13 -101
.....*
.
.*.......*
*........*
*...**....*
*......*.*
......**.*
.
....*
#P 29 -91
....*
..**.**
.
..**
..*
....*...*
*...*
#P 39 -75
.....*
.
.*.......*
*........*
*...**....*
*......*.*
......**.*
.
....*
#P 30 -82
.....*
..*.*
.*
..**
..*.*
..*.*
.*.**
**.**
...***
#P 6 -98
..***
..***
*..**
*.*
***
#P 20 -83
...*
..*.*
..*.*
.*..*
.*.*
*
**
.*
#P 22 -72
.*
*.*
*
*
*
#P 18 -66
...*
..***.**
**.***
..*
#P 21 -60
..*
.*.**
**.*.**
....*
......*
#P 28 -56
.**....**
...*.**
****.*.***
....*
#P -14 -71
...***
.
.*
**...*
.*.*
....***
....*
.
....**
...**
....*
...**
....**
#P -7 -58
.......*
*...*..*.*..*
*****.**....*
.*.*....*...*
.
........***
.........*
#P 12 -45
...***
.
.*
**...*
.*.*
....***
....*
.
....**
...**
....*
...**
....**
#P -3 -93
**
**
#P -11 -85
**
**
#P -19 -77
**
**
#P 43 -55
**
**
#P 35 -47
**
**
#P 27 -39
**
**
#P 19 -31
**
**
#P 61 -67
.....**
.
...*...*
..*
.*.......*
.....*....*
*....*.*.*
*........*
*.**....*
***.**.*
.**.***
#P 82 -50
.....*
...**.*
..*
.*..*...*
*
**..**
**
..*.....*
***....*
**....*
.****
#P 92 -46
*
*
#P 87 -41
.....**
.
...*...*
..*
.*.......*
.....*....*
*....*.*.*
*........*
*.**....*
***.**.*
.**.***
#P 74 -39
*.*
***
.**
#P 72 -34
.*
.*.*
.***
*
*****
#P 83 -20
..**
**..*
*..***
*....*
.*****
...**
#P 93 -19
*
*
*
#P 57 -29
.*
*.*
.*
...*
...**
.*..*
.***
..*
#P 40 -30
..*.*
.**.**
.**.*
*
.*
.*
#P 48 -22
....*
...***
.
...***
**.**
..*
#P 66 -4
..*.*
.**.**
.**.*
*
.*
.*
#P 49 -56
**
**
#P 41 -48
**
**
#P 33 -40
**
**
#P 87 -10
**
**
#P 79 -2
**
**
#P 71 6
**
**
#P -98 61
....****
..*....**
.*....***
*.....*
.......**
...**..**
........*
*...*..*
......*
..*.**
...*
#P -100 66
*
*
#P -105 52
....***.**
...*.**.***
..*....**.*
.*........*
.*.*.*....*
*....*
.*.......*
........*
...*...*
.
....**
#P -79 78
....***.**
...*.**.***
..*....**.*
.*........*
.*.*.*....*
*....*
.*.......*
........*
...*...*
.
....**
#P -101 38
*
*
*
#P -96 36
.**
*****
*....*
***..*
.*..**
..**
#P -84 51
*****
....*
.***
.*.*
...*
#P -84 58
**
***
*.*
#P -69 43
..*
.***
*..*
**
.*
...*
..*.*
...*
#P -79 20
....*
....*
.....*
.*.**
**.**
.*.*
#P -61 38
...*
.**.**
***
.
***
.*
#P -53 46
....*
....*
.....*
.*.**
**.**
.*.*
#P -80 14
**
**
#P -88 22
**
**
#P -96 30
**
**
#P -42 60
**
**
#P -50 68
**
**
#P -58 76
**
**
#P -57 88
......*
.
.*.**
.*.*......*
*....**...*
.*........*
.*.......*
.
.....*
#P -45 106
....*...*
*...*
......*
.....**
.
..**.**
....*
#P -31 114
......*
.
.*.**
.*.*......*
*....**...*
.*........*
.*.......*
.
.....*
#P -18 115
..***
..*.*
**..*
***
***
#P -43 95
***
.**.**
.**.*
.*.*
.*.*
..**
....*
.*.*
*
#P -32 97
...*
...**
....*
.*.*
*..*
*.*
*.*
.*
#P -32 89
..*
..*
..*
*.*
.*
#P -33 84
.....*
..***.**
**.***
....*
#P -35 78
..*
**.*.**
..**.*
....*
#P -45 74
.....*
***.*.****
...**.*
.**....**.*
#P -26 54
.**
..**
..*
..**
.**
.
..*
***
...*.*
.*...**
.....*
.
.***
#P -13 73
...*
..***
.
*...*....*.*
*....**.*****
*..*.*..*...*
.....*
#P 0 80
.**
..**
..*
..**
.**
.
..*
***
...*.*
.*...**
.....*
.
.***
#P -28 51
**
**
#P -36 59
**
**
#P -44 67
**
**
#P -52 75
**
**
#P 10 97
**
**
#P 2 105
**
**
#P -6 113
**
**
#P 273 266
..*....*
**.****.**
..*....*
#P 268 268
.*
*
*
#P 266 273
**...**
.*****
..***
...*
#P 269 284
**
**
#P -270 -286
**
**
#P -272 -279
..***
.
..*.*
.*****
**...**
**...**
#P -274 -270
*
**
***
**
*
#P -283 -270
..*
.**
***
.**
..*
#P 41 0
..**
.*.*
***
**
**
.*.*
..*
#P 40 9
**...**
**...**
.
..***
..***
...*
#P 38 20
..***
..***
.*...*
.
**...**
#P 40 34
**
**
#P 34 12
..***
..*
...*
.*
.**
*.*
#P 27 23
**
.**
*
#P 19 30
.*
.**
*.*
#P 30 39
**
**
#P 11 36
.**....*
*..*..*.*
.***.*.**
....**.**
.....*.**
......*.*
.......*
#P 5 34
..**
.*.*
*
*..*
*
.*.*
..**
#P -4 36
**
**
#P 3 -38
**
**
#P -8 -41
*.*
*..*
...**
.*...**
...**
*..*
*.*
#P -16 -40
....**
...*.*
.*...*
**.***
...**
#P -22 -43
..**
.*.*
*
*..*
*
.*.*
..**
#P -31 -41
**
**
#P -22 -32
*
*.*
**
#P -30 -25
.*
*
***
#P -34 -27
**
**
#P -68 -25
**
**
#P -59 -28
...*
..**
.**
***
.**
..**
...*
#P -52 -26
**
**
**
#P -49 -30
....*
..*.*
.*.*
*..*
.*.*
..*.*
....*
#P -80 -7
**
**
#P -71 -9
..**
.*.*
*
*..*
*
.*.*
..**
#P -65 -7
.**....*
*..*..*.*
.***.*.**
....**.**
.....*.**
......*.*
.......*
#P -42 -4
*
****
.****
.*..*
.****
****
*
#P -33 -6
...*
..*.*
**...*
**...*
**...*
..*.*
...*
#P -18 -4
**
**
#P -57 -13
.*
.**
*.*
#P -41 -9
.*
**
*.*
#P -49 -21
.....*
****..*
..*.***
...*
*
...*
*
#P -34 -20
.****
*...*
....*
*..*
#P -4 -20
.****
*...*
....*
*..*
#P 6 -18
***
*
.*
#P -44 -45
.**
**
..*
#P 63 63
.*
..*
***

View File

@ -0,0 +1,174 @@
#Life 1.05
#D p120 HWSS gun
#N
#P -45 13
**
**
#P -36 10
..**
.*.*
*
*..*
*
.*.*
..**
#P -30 8
.......*
......*.*
.....*.**
....**.**
.***.*.**
*..*..*.*
.**....*
#P -13 6
..**
..*
*.*
**
#P -42 26
**
**
#P -36 24
....*
..*.*
**
**
**
..*.*
....*
#P -27 28
*
*
*
#P -26 24
..*
****
**..*
...**
#P -19 26
**
**
...**
...***
...**
**
**
#P -10 31
**
*.*
..*
..**
#P -11 18
..**
*..*
.
*..*
.*..*
..*.*
...*
.
..**
..**
#P -22 18
*.*
.**
.*
#P -17 18
.*
.**
*.*
#P 6 18
.**
.*..*
.
.*..*
*..*
*.*
.*
.
.**
.**
#P 6 31
..**
.*.*
.*
**
#P 15 26
**
*..*
....*
....*
....*
*..*
**
#P 26 24
...*.*
.*...*
.*
*....*
.*
.*...*
...*.*
#P 40 26
**
**
#P 9 6
**
.*
.*.*
..**
#P 14 8
....*
..*.*
.*.*
*..*
.*.*
..*.*
....*
#P 32 10
...*
..**
.**
***
.**
..**
...*
#P 39 12
**
**..**
**..**
#P 23 14
*.*
**
.*
#P 18 22
.*
**
*.*
#P 3 7
.*
**
*.*
#P -2 3
.*
.**
*.*
#P -11 -9
**.******
**.******
**
**.....**
**.....**
**.....**
.......**
******.**
******.**
#P 2 -13
.....*
....*.*
...*...*
..*...*
.*...*
*...*
.*.*
..*

View File

@ -0,0 +1,420 @@
#Life 1.05
#D Irrational 2
#D Population growth appears to be linear with an irrational multiplier.
#D The probability that a MWSS will hit a boat seems to be 1/sqrt(2)
#D for the lower (westward) stream, and sqrt(2)-1 for the upper
#D (eastward) stream. If this is true, then the population in gen t is
#D about (78 sqrt(2) - 73)t/40 for t even, and (82 sqrt(2) - 77)t/40
#D for t odd. If you can prove any of this, please let me know.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 5/20/91
#N
#P -76 -33
.*
*
*...*
****
.
.
.
....**
..**..*
..*..***
..*....*
...*****
.....**
.
.*..*
*
*...*
****
#P -68 -33
..**
.****
**.**
.**
#P -66 -24
.*
***
#P -63 -28
.*
.**
**.*
.*.*
..**
.*
#P -58 -17
.*
*
*...*
****
#P -51 -19
*.*
.**
.*
#P -49 -11
****
*...*
*
.*..*
#P -47 -5
.***
*...*
....*
..**
#P -67 -9
****
*...*
*
.*
.
.....*
...***
..*...*
..*
..**.*
....*
.....*
.
.
****
*...*
*
.*
#P -60 -1
***
***
.**
*
#P -59 5
.**
**.**
.****
..**
#P -82 9
****
*...*
*
.*
.
.
...**
..*..*
..*..*
..**.**
....**
.
.
.
****
*...*
*
.*
#P -74 9
.**
**.**
.****
..**
#P -72 14
...*
...**
.....*
*****
****
*
#P -65 24
.*
*
*...*
****
#P -57 20
***
*
.*
#P -52 15
***
*
.*
#P -47 10
***
*
.*
#P -42 5
***
*
.*
#P -37 0
***
*
.*
#P -32 -5
***
*
.*
#P -36 -14
*.*
.**
.*
#P -33 -11
.*
.**
*.*
#P -27 -10
***
*
.*
#P -26 -4
****
*...*
*
.*..*
.
.....*
...***
..*...*
..*
..**.*
....*
.....*
.
.
****
*...*
*
.*
#P -19 4
***
***
.**
*
#P -18 10
.**
**.**
.****
..**
#P -17 -5
..***
.*****
**.***
.**
#P -12 3
..*
**
.*.*
..**
#P -6 14
******
*.....*
*
.*
#P -14 -12
...**
***.**
*****
.***
#P -4 -11
.*
*.*
**
#P 5 -16
..**
**.**
****
.**
#P 6 -7
.***
*..*
**.**
#P 13 -9
**
*
#P 9 10
*****
*....*
*
.*
#P 14 0
.****
*...*
....*
...*
#P 23 -15
.**
****
**.**
..**
.
.
.
.
**
.**
**
*
.
.
.**
****
**.**
..**
#P 24 8
*
.**
**
#P 29 3
*
.**
**
#P 30 8
.*
*
***
#P 33 13
***
*
.*
#P 34 -2
*
.**
**
#P 39 -7
*
.**
**
#P 44 -12
*
.**
**
#P 49 -17
*
.**
**
#P 54 -22
*
.**
**
#P 60 -27
..**
**.**
****
.**
#P 76 -26
..**
.****
.**.**
...**
.
.
.
**
*.*
*.**
.**
.*
.
.
..**
.****
.**.**
...**
#P 67 -18
...***
***
*
***
#P 68 -11
.****
*...*
....*
...*
#P 62 -8
.**
****
**.**
..**
.
.
.
*
.*
.**
**
*
.
.
.**
****
**.**
..**
#P 57 -3
...*
.*
.*..*
*
.*.*
.*
...**
#P 53 -7
.****
*...*
....*
...*
#P 42 -1
....*
.....*
....***
....***
*****.***
.***...**
..*
#P 44 8
.**
****
**.**
..**
#P 47 17
..*
.*.*
*
..**
#P 53 14
..**
**.**
****
.**
#P 71 16
..**
**.**
****
.**
.
.
*
**
.**
.*
*
.
.
.
..**
**.**
****
.**
#P 68 22
***
*
.*
.*
..*
#P 59 22
...*.*
.*....*
.*...*
*...*
.**
.**
#P 62 29
*..*
....*
*...*
.****

View File

@ -0,0 +1,351 @@
#Life 1.05
#D Irrational 5
#D Population growth is linear with an irrational multiplier.
#D Each middleweight spaceship produced by the puffers either hits a
#D boat or is deleted by a glider. Denoting the first possibility by
#D 1 and the second by 0, we obtain a sequence beginning 101011011010...
#D If we prepend 101, we obtain the Fibonacci string sequence, defined
#D by starting with 1 and then repeatedly replacing each 0 by 1 and each
#D 1 by 10: 1 -> 10 -> 101 -> 10110 -> 10110101 -> ... (See Knuth's
#D "The art of computer programming, vol. 1", exercise 1.2.8.36 for
#D another definition.) The density of 1's in this sequence is
#D (sqrt(5)-1)/2, which implies that the population in gen t is
#D asymptotic to (8 - 31 sqrt(5)/10) t. More specifically, the
#D population in gen 20 F[n] - 92 (n>=6) is 98 F[n] - 124 F[n-1] + 560,
#D where F[n] is the n'th Fibonacci number. (F[0]=0, F[1]=1, and
#D F[n] = F[n-1] + F[n-2] for n>=2.)
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 5/12/91
#N
#P -67 -32
..**
.****
**.**
.**
.
.
.
....*
...*
..**
...**
....*
.
.
..**
.****
**.**
.**
#P -62 -25
*
.*
.*
..*
***
#P -58 -31
****
*...*
*
.*..*
#P -57 -26
....**
....**
..*...*
.*...*
*....*
.*.*
#P -49 -16
..**
.****
**.**
.**
#P -58 -8
.**
**.**
.****
..**
.
.
....*
...**
..**
...*
....*
.
.
.
.**
**.**
.****
..**
#P -53 -2
**
...*
.*.*
....*
*..*
...*
.*
#P -49 5
.*
*
*...*
****
#P -73 10
.**
**.**
.****
..**
.
.
....*
...**
..**.*
...*.*
....**
.
.
.
.**
**.**
.****
..**
#P -64 16
...***
.....*
...***
***
#P -64 9
.*
*
*...*
****
#P -56 25
..**
.****
**.**
.**
#P -48 21
.**
**
..*
#P -43 16
.**
**
..*
#P -38 11
.**
**
..*
#P -33 6
.**
**
..*
#P -28 1
.**
**
..*
#P -40 -10
.**
**.**
.****
..**
#P -26 -12
....*
.....*
*....*
.*****
#P -17 -3
.**
**.**
.****
..**
.
.
....*
...**
..**
...**
.
.
.
.
.**
**.**
.****
..**
#P -8 -4
.*
*
*...*
****
#P -5 -16
...*
....*
*...*
.****
#P 1 12
..**
.****
**.**
.**
#P 5 1
..**
**.**
****
.**
#P 13 -13
.****
*...*
....*
...*
.
.
.*
..*
..*
.**
*
.
.
.
.****
*...*
....*
...*
#P 22 9
.**
**.***
.*****
..***
#P 26 -3
..*
*.*
.**
#P 31 -8
..*
*.*
.**
#P 36 -13
..*
*.*
.**
#P 41 -18
..*
*.*
.**
#P 46 -23
..*
*.*
.**
#P 52 -29
...*
....*
*...*
.****
#P 36 8
.****
*...*
....*
...*
#P 69 -26
.****
*...*
....*
...*
.
.
**
*.*
..*
***
.
.
.
.
.****
*...*
....*
...*
#P 60 -20
....**
..*
.*..*
**
.**
#P 61 -12
..**
**.**
****
.**
#P 54 -8
.****
*...*
....*
*..*
.
.
**
..*
..*
.**
*
.
.
.
.****
*...*
....*
...*
#P 51 -3
.**
***
*
***
.*
..*
#P 46 -8
..**
**.**
****
.**
#P 45 12
...*
....*
*...*
.****
#P 63 14
...*
....*
*...*
.****
.
.
.
*
.**
..*
..*
**
.
.
...*
....*
*...*
.****
#P 61 21
.*
**
.*
.*
#P 52 21
.....*
..****
.*****
*
.**
..*
#P 55 28
.**
****
**.**
..**

View File

@ -0,0 +1,264 @@
#Life 1.05
#D Unknown irrational
#D Population growth appears to be linear. If you can find the rate
#D of growth, please let me know. (It's probably irrational, and
#D probably different for even and odd generations.) Just proving
#D that the pattern never blows up isn't quite trivial.
#D Dean Hickerson, dean@ucdmath.ucdavis.edu 6/16/91
#N
#P 33 -31
...**
.**.**
.****
..**
.
.
.*
.**
*.**
*.*
**
.
.
.
...**
.**.**
.****
..**
#P 28 -23
**
*
#P 25 -32
...*
....*
*...*
.****
#P 16 -15
..**
**.**
****
.**
#P 25 -8
.****
*...*
....*
*..*
#P 22 -3
.**
*****
*....*
***..*
.*..**
..**
#P 25 6
.****
*...*
....*
...*
#P 17 6
..**
**.**
****
.**
#P 41 8
..**
**.**
****
.**
.
.
*
**
.**
.*
*
.
.
.
..**
**.**
****
.**
#P 36 14
...**
.*
.*.*
*
.*..*
.*
...*
#P 27 12
..**
.
.*..*
**.**
.*.*****
..*..***
......*
#P 32 7
...*
....*
*...*
.****
#P 24 23
.**
****
**.**
..**
#P 7 -10
.****
*...*
....*
...*
#P 12 13
**
.**
*
#P 17 18
**
.**
*
#P 3 14
.****
******
****.**
....**
#P -2 21
**...*......*
..*.*........*
**..*........*
.....*********
#P 3 27
.****
******
****.**
....**
#P -10 24
....*
.....*
*....*
.*****
#P -5 13
.***
*****
***.**
...**
#P -13 8
.....*
......*
*.....*
.******
#P 18 -1
**
*
#P 11 -17
**
*
#P 10 -24
..**
..*
*.*
**
#P -2 -22
...*.*
.*...*
.*
*
.*
.*...*
...*.*
#P -12 -20
...*
..****
.**.*.*
***.*..*
.**.*.*
..****
...*
#P -22 -18
**
*
#P -37 -17
**
*
#P -40 -9
...*
..***
.*****
*.*.*.*
**...**
#P -42 -2
.....*
....*.*
...**.*
...***
..*..*
..***
.*...*
*.....*
.*...*
..***
#P -40 17
**
*
#P -45 22
**
*
#P -38 20
....*
.****
****
*..*
****
.****
....*
#P -22 22
**
*.*
.***
..***
.***
*.*
**
#P -13 20
..**
..*
*.*
**
#P -28 22
.*
.**
*.*
#P -32 6
.*
..*
***
#P -29 -2
**
*
#P -24 -4
...*
.****
..*.**
*.*.***
..*.**
.****
...*
#P -16 2
.*
*
***
#P -7 -2
...**
.*..*
*
*
*
.*..*
...**
#P 5 -6
**
*
#P 5 1
**
*

View File

@ -0,0 +1,239 @@
#Life 1.05
#D Jaws, a switch-engine based quadratic growth mechanism.
#D
#D The population roughly follows the equation
#D p = (5.167e-6)t^2 + 2.72t + 1000.
#D
#D If you can't see the pattern, that's probably because
#D it is too large and sparse, and most Life programs at
#D the time of this writing are not powerful enough to
#D view it.
#D
#D By Nick Gotts, February 1997.
#N
#P -268 -632
..*.*
.....*
.*..*
***
.
.
.
.
.
.............*
............*.*
.
...........*..*
...........**
...........*
#P -489 -400
...........................*
..........................***
..........................***
.............................***
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.**
***
.**
...*
...*
...*
#P -220 -312
...***
***
***
.*
.
.
.
.
.............*
.............*
.............*
...........**
..........***
...........**
#P -585 -215
...........................*
..........................***
..........................***
.............................***
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.**
***
.**
...*
...*
...*
#P -29 1900
.........................**
........................*.*.**
...........................***
............................**
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.*
*
**
..*
.***
.***
#P -150 -948
.....*
.....*
**....*
...*.*
..**.*
.
.
.
.
.
.
...............*
.............**.**
.
.............**
.............*
...............*
...............*
#P -603 756
.........................***
..........................*..*
..............................*
...........................*.*
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
*
**
*..*
.
.*.*
..*
#P -653 338
.........................***
..........................*..*
..............................*
...........................*.*
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
*
**
*..*
.
.*.*
..*

View File

@ -0,0 +1,17 @@
#Life 1.05
#D A nice cycler
#D Found by watching random starts.
#D Shapes are correct, but spacing is wrong.
#D they need to be horizontally closer.
#D 11th October 1998
#N
#P -10 -4
....**
....***
.....***...*
......**...**
***..***...***
......**...**
.....***...*
....***
....**

View File

@ -0,0 +1,185 @@
#Life 1.05
#D Line Puffer of width 33
#D
#D The width is defined by the length of the first free-standing line
#D in the puffer's plume. The formula for this is 12n+1-s, where n is
#D the number of middle segments, and s is the number of cells covered
#D by the little 3-cell, 5-unit puff-suppressors on the upper edge of
#D this otherwise symmetrical pattern.
#D
#D Here, n=4, and s=6+5+5. The Y-shaped puff-suppressors can have 5,
#D 6, or 7 units of spacing on between them, or between one of them and
#D the end. You only need 2 or 3 such suppressors to produce any
#D puffer width.
#D
#D Notice that placing random debris behind the puffer sometimes
#D affects the plume permanently - even turning it asymmetrical if the
#D debris was asymmetrical. It also affects the period of the puffer,
#D that is, the number of generations it takes to repeat. By
#D increasing the width, the period can be made to rise exponentially,
#D surpassing 10^6 at a width of only about 70. But the most amazing
#D thing is that it has a half-life on the order of 10^8 generations.
#D
#D By Hartmut Holzwart and Al Hensel, April 1994
#N
#P 3 -22
*
..*
*
.
.
*
..*
*
.
*
*
..*
#P 1 -49
*.*
*..*
...**
.....*
...****
..*....*
....*..*
....*..*
......*
*.****
*...*
...*
.*.*
.
..***
...**
..***
.
.*.*
.*..*
....*
..*..*
....**
#P 10 -48
*
****
..**
.....*
..****
......*
..*..***
....***
.....*
*.***
**..*
.***
.*
...*
.*.*
....*
.*.*
...*
.*
.***
..***
..**
#P 6 -26
*.*..**
*.*.**
*
*.*.**
*.*..**
*.....**
*.*..*.**
*.*.***..*
*........*
*.*.***..*
*.*..*.**
*.....**
*.*..**
*.*.**
*
*.*.**
*.*..**
*.....**
*.*..*.**
*.*.***..*
*........*
*.*.***..*
*.*..*.**
*.....**
*.*..**
*.*.**
*
*.*.**
*.*..**
*.....**
*.*..*.**
*.*.***..*
*........*
*.*.***..*
*.*..*.**
*.....**
*.*..**
*.*.**
*
*.*.**
*.*..**
*.....**
*.*..*.**
*.*.***..*
*........*
*.*.***..*
*.*..*.**
*.....**
*.*..**
*.*.**
*
*.*.**
*.*..**
#P 1 27
....**
..*..*
....*
.*..*
.*.*
.
..***
...**
..***
.
.*.*
...*
*...*
*.****
......*
....*..*
....*..*
..*....*
...****
.....*
...**
*..*
*.*
#P 10 27
..**
..***
.***
.*
...*
.*.*
....*
.*.*
...*
.*
.***
**..*
*.***
.....*
....***
..*..***
......*
..****
.....*
..**
****
*

View File

@ -0,0 +1,449 @@
#Life 1.05
#D Superstable line puffer of width 76
#D
#D The slight instability in the previous line
#D puffer is corrected in this version, which
#D is believed to be perfectly stable and not
#D have a half-life. In the previous version,
#D a line puffer of width 76 collapses after
#D 39.7 million generations.
#D
#D Unfortunately, adding puff-suppressors
#D brings back the instability. So the formula
#D for the width of this puffer is 12n+7m+7,
#D introducing 7-unit spacers so that all
#D sufficiently large widths are possible.
#D
#D Tim Coe, May 1996.
#N
#P 10 -76
*.*
*..*
...**
.....*
...****
..*....*
....*..*
....*..*
......*
*.****
*...*
...*
.*.*
.
..***
...**
..***
.
.*.*
...*
*...*
*.****
......*
....*..*
....*..*
..*....*
...****
.....*
...**
*..*
*.*
#P 7 -44
**.*
...*
*.**
*
#P 29 -49
*.*
*..*
...**
.....*
...****
..*....*
....*..*
....*..*
......*
*.****
*...*
...*
.*.*
.
..***
...**
...**
*****
..*
....*
..*.*
.....*
..*.*
....*
..*
*****
...**
...**
..***
.
.*.*
...*
*...*
*.****
......*
....*..*
....*..*
..*....*
...****
.....*
...**
*..*
*.*
#P 15 -33
...*.*....*.*
**.*..*..*..*
......**...*
...*......*
...*.*****
**
...*.*****
...*......*
......**...*
**.*..*..*..*
...*.*....*.*
#P 23 -78
*
****
..**
.....*
..****
......*
..*..***
....***
.....*
*.***
**..*
.***
.*
...*
.*.*
....*
.*.*
...*
.*
.***
**..*
*.***
.....*
....***
..*..***
......*
..****
.....*
..**
****
*
#P 18 -47
...*.*
...*
.*..**
..***
*.*
*
*
#P 8 -41
.........*
.....*.***
....*.**
....**
*..**
*.**
#P 29 -3
*.*
*..*
...**
.....*
...****
..*....*
....*..*
....*..*
......*
*.****
*...*
...*
.*.*
.
..***
...**
...**
*****
..*
....*
..*.*
.....*
..*.*
....*
..*
*****
...**
...**
..***
.
.*.*
...*
*...*
*.****
......*
....*..*
....*..*
..*....*
...****
.....*
...**
*..*
*.*
#P 15 13
...*.*....*.*
**.*..*..*..*
......**...*
...*......*
...*.*****
**
...*.*****
...*......*
......**...*
**.*..*..*..*
...*.*....*.*
#P 23 47
*
****
..**
.....*
..****
......*
..*..***
....***
.....*
*.***
**..*
.***
.*
...*
.*.*
....*
.*.*
...*
.*
.***
**..*
*.***
.....*
....***
..*..***
......*
..****
.....*
..**
****
*
#P 10 45
*.*
*..*
...**
.....*
...****
..*....*
....*..*
....*..*
......*
*.****
*...*
...*
.*.*
.
..***
...**
..***
.
.*.*
...*
*...*
*.****
......*
....*..*
....*..*
..*....*
...****
.....*
...**
*..*
*.*
#P 7 40
*
*.**
...*
**.*
#P 18 40
*
*
*.*
..***
.*..**
...*
...*.*
#P 8 35
*.**
*..**
....**
....*.**
.....*.***
.........*
#P 5 -40
*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
#P 8 -34
*.**
*..**
....**
....**
*..**
*.**
.
*.**
*..**
....**
....**
*..**
*.**
.
*.**
*..**
....**
*..*.**
*.***..*
.......*
*.***..*
*..*.**
....**
*..**
*.**
.
*.**
*..**
....**
*..*.**
*.***..*
.......*
*.***..*
*..*.**
....**
*..**
*.**
#P 5 4
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
.*
*
#P 8 4
*.**
*..**
....**
*..*.**
*.***..*
.......*
*.***..*
*..*.**
....**
*..**
*.**
.
*.**
*..**
....**
....**
*..**
*.**
.
*.**
*..**
....**
*..*.**
*.***..*
.......*
*.***..*
*..*.**
....**
*..**
*.**

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More