最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

比特幣上的數(shù)獨(dú)游戲合約的實(shí)現(xiàn)代碼

 更新時(shí)間:2021年01月19日 16:21:15   作者:freedomhero  
這篇文章主要介紹了比特幣上的數(shù)獨(dú)游戲合約的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

我們在 Bitcoin SV 上實(shí)現(xiàn)了一個(gè)數(shù)獨(dú)游戲智能合約,利用之前介紹過的一種合約范式可以將游戲中尋找解題方案的過程外包上鏈。因?yàn)榍蠼鈹?shù)獨(dú)問題的計(jì)算工作量會隨著其行列數(shù)快速增長,實(shí)際上它也是一個(gè) NP-完全 問題。不過我們可以借由比特幣智能合約巧妙地尋求答案,只需要驗(yàn)證答案提供者所給出的解答是否滿足要求即可,這樣即可以將復(fù)雜的求解計(jì)算過程實(shí)現(xiàn)鏈下外包。

典型的數(shù)獨(dú)游戲

sCrypt 合約代碼如下:

import "util.scrypt";
import "array.scrypt";

contract Sudoku {

 bytes board;

 static const int N = 9;
 static bytes EMPTY = b'00';

 constructor(bytes board) {
  this.board = board;
 }

 function merge(bytes solution) : bytes {
  bytes newBoard = this.board;
  int i = 0;
  loop (N) {
   int j = 0;
   loop (N) {

    int value = this.readValue(newBoard, i, j);
    int inputValue = this.readValue(solution, i, j);
    if (value == 0) {
     require(inputValue <= 9);
     newBoard = this.setValue(newBoard, i, j, inputValue);
    } else {
     require(value == inputValue);
    }
    j++;
   }

   i++;
  }
  return newBoard;
 }

 public function solve(bytes solution) {

  require(len(solution) == Sudoku.N * Sudoku.N);

  bytes newBord = this.merge(solution);

  Array rowArray = new Array();
  Array colArray = new Array();
  Array squareArray = new Array();

  int i = 0;
  loop (N) {
   int j = 0;

   loop (N) {
    // check for duplicate

    // in a row
    int rowElem = this.readValue(newBord, i, j);
    require(rowArray.indexOf(rowElem) == -1);
    rowArray.push(rowElem);

    // in a column
    int colElem = this.readValue(newBord, j, i);
    require(colArray.indexOf(colElem) == -1);
    colArray.push(colElem);

    // in a subgrid
    int squareElem = this.readSquareValue(newBord, i, j);
    require(squareArray.indexOf(squareElem) == -1);
    squareArray.push(squareElem);

    j++;
   }

   rowArray.clear();
   colArray.clear();
   squareArray.clear();

   i++;
  }

  require(true);
 }

 static function readValue(bytes board, int i, int j): int {
  return Util.fromLEUnsigned(Util.getElemAt(board, Sudoku.index(i, j)));
 }

 static function setValue(bytes board, int i, int j, int value): bytes {
  return Util.setElemAt(board, this.index(i, j), Util.toLEUnsigned(value, 1));
 }

 static function readSquareValue(bytes board, int i, int j): int {
  return Util.fromLEUnsigned(Util.getElemAt(board, Sudoku.indexSquare(i, j)));
 }


 static function index(int row, int col) : int {
  return row * Sudoku.N + col;
 }

 static function indexSquare(int i, int j) : int {
  int row = i / 3 * 3 + j / 3;
  int col = i % 3 * 3 + j % 3;
  return Sudoku.index(row, col);
 }
}

到此這篇關(guān)于比特幣上的數(shù)獨(dú)游戲合約的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)比特幣數(shù)獨(dú)游戲合約內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用阿里大于(大魚)平臺進(jìn)行發(fā)送手機(jī)驗(yàn)證碼的流程

    使用阿里大于(大魚)平臺進(jìn)行發(fā)送手機(jī)驗(yàn)證碼的流程

    這篇文章主要介紹了使用阿里大于(大魚)平臺進(jìn)行發(fā)送手機(jī)驗(yàn)證碼的流程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • PHP、JAVA、.NET這三種技術(shù)的區(qū)別分析

    PHP、JAVA、.NET這三種技術(shù)的區(qū)別分析

    這篇文章主要介紹了PHP、JAVA、.NET這三種技術(shù)的區(qū)別分析,本文從多個(gè)方面介紹、對比了PHP、JAVA、.NET這三種技術(shù),需要的朋友可以參考下
    2014-08-08
  • 關(guān)于mapboxgl加載tiff的問題

    關(guān)于mapboxgl加載tiff的問題

    這篇文章主要介紹了mapboxgl加載tiff,先使用geotiff.js解析tiff數(shù)據(jù),再配合使用canvas繪制圖片導(dǎo)出base64格式數(shù)據(jù),然后就可以使用添加到mapboxgl圖層了,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Base64 編碼介紹、Base64編碼轉(zhuǎn)換原理與算法

    Base64 編碼介紹、Base64編碼轉(zhuǎn)換原理與算法

    Base64編碼,是我們程序開發(fā)中經(jīng)常使用到的編碼方法。它是一種基于用64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的表示方法,需要的朋友可以參考下
    2016-06-06
  • 2018年最值得一讀的互聯(lián)網(wǎng)書單

    2018年最值得一讀的互聯(lián)網(wǎng)書單

    2018年已經(jīng)過去了近三分之二了,是不是感覺時(shí)光匆匆、一去不復(fù)返,過去的時(shí)間我們追不回,但是我們可以更加珍惜以后的時(shí)間!下面這篇文章主要給大家分享了2018年最值得一讀的互聯(lián)網(wǎng)書單,希望以后的日子里大家可以多讀書,讀好書
    2018-08-08
  • v語言初體驗(yàn)小結(jié)

    v語言初體驗(yàn)小結(jié)

    這篇文章主要介紹了v語言初體驗(yàn)小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 最適合人工智能開發(fā)的5種編程語言 附人工智能入門書籍

    最適合人工智能開發(fā)的5種編程語言 附人工智能入門書籍

    這篇文章主要為大家詳細(xì)介紹了最適合人工智能開發(fā)的5種編程語言,并為大家推薦人工智能入門書籍,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • thymeleaf實(shí)現(xiàn)th:each雙重多重嵌套功能

    thymeleaf實(shí)現(xiàn)th:each雙重多重嵌套功能

    今天給大家分享一個(gè)使用 thymeleaf 實(shí)現(xiàn)一個(gè)動(dòng)態(tài)加載一二級文章分類的功能,本文通過代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-11-11
  • 12個(gè)常用前端UI框架集合匯總

    12個(gè)常用前端UI框架集合匯總

    本文整理了一些比較流行的前端UI框架其中有VUE、bootstrap、jQuery等框架,,排名不分先后,僅供參考。可按照項(xiàng)目需求自行考慮
    2020-02-02
  • asp php 清空access mysql mssql數(shù)據(jù)庫的代碼

    asp php 清空access mysql mssql數(shù)據(jù)庫的代碼

    php清空mysql asp情況access或mssql
    2008-12-12

最新評論

通州市| 务川| 南安市| 顺义区| 辽阳市| 承德市| 额尔古纳市| 陵水| 阳泉市| 盐城市| 博爱县| 徐州市| 青龙| 健康| 康乐县| 远安县| 沁源县| 巴南区| 东至县| 大城县| 谷城县| 灵武市| 文登市| 石嘴山市| 仪陇县| 通化县| 尼玛县| 灵寿县| 丰顺县| 嘉黎县| 黄大仙区| 曲水县| 阿瓦提县| 方正县| 屯昌县| 玛纳斯县| 尚义县| 鄂伦春自治旗| 古蔺县| 黎平县| 乌鲁木齐县|