//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.18; contract SimpleStore { struct Monster { uint createdAt; } mapping (bytes8 => Monster) public monsters; function get(bytes8 _genes) public constant returns (uint createdAt) { return (monsters[_genes].createdAt); } function createMonster(bytes8 _parentGenes) public { bytes8 parentGenes = _parentGenes & 0xfffffffffffff000; bytes8 childGenes = getNewGenes(parentGenes, 0); monsters[childGenes] = Monster({ createdAt: now }); } function exists(bytes8 _genes) private constant returns (bool) { return monsters[_genes].createdAt != 0; } function getNewGenes(bytes8 _parentGenes, uint i) private returns (bytes8) { if(i > 4096) { revert(); } bytes8 newGenes = _parentGenes | bytes8(block_number+i % 4096); if (exists(newGenes)) { return getNewGenes(_parentGenes, i+1); } return newGenes; } uint block_number = 4095; }
0.4.18