Skip to content

Instantly share code, notes, and snippets.

View Jamil's full-sized avatar

Jamil Dhanani Jamil

View GitHub Profile
@Jamil
Jamil / nft-marketplace-functions.clar
Last active August 24, 2022 22:47
NFT contract marketplace functions
(define-read-only (get-listing-in-ustx (id uint))
(map-get? market id))
(define-public (list-in-ustx (id uint) (price uint) (comm-trait <commission-trait>))
(let ((listing {price: price, commission: (contract-of comm-trait), royalty: (var-get royalty-percent)}))
(asserts! (is-sender-owner id) (err ERR-NOT-AUTHORIZED))
(map-set market id listing)
(print (merge listing {a: "list-in-ustx", id: id}))
(ok true)))
@Jamil
Jamil / internal-variables.clar
Created August 24, 2022 22:45
NFT contract internal variables
(define-data-var mint-limit uint u15)
(define-data-var last-id uint u1)
(define-data-var total-price uint u32000000)
(define-data-var artist-address principal 'SP1X6M947Z7E58CNE0H8YJVJTVKS9VW0PHD4Q0A5F)
(define-data-var ipfs-root (string-ascii 80) "ipfs://ipfs/QmQDXepX6skZWU7RJn1gW9bsKnQi5hsiuGj9cSeJwJNdDD/json/")
(define-data-var mint-paused bool false)
(define-data-var premint-enabled bool false)
(define-data-var sale-enabled bool false)
(define-data-var metadata-frozen bool false)
(define-data-var airdrop-called bool false)
@Jamil
Jamil / error-codes.clar
Created August 24, 2022 22:44
NFT and mint contract error codes
(define-constant ERR-NO-MORE-NFTS u100)
(define-constant ERR-NOT-ENOUGH-PASSES u101)
(define-constant ERR-PUBLIC-SALE-DISABLED u102)
(define-constant ERR-CONTRACT-INITIALIZED u103)
(define-constant ERR-NOT-AUTHORIZED u104)
(define-constant ERR-INVALID-USER u105)
(define-constant ERR-LISTING u106)
(define-constant ERR-WRONG-COMMISSION u107)
(define-constant ERR-NOT-FOUND u108)
(define-constant ERR-PAUSED u109)
@Jamil
Jamil / bigram.hs
Created December 23, 2016 22:17
Bigram model generation, and pseudorandom text generation
import Data.Bits
import Data.List
bigrams :: [String] -> [(String, String)]
bigrams [x] = []
bigrams (x:y:xs) = (x, y):(bigrams $ y:xs)
successors :: String -> [(String, String)] -> [String]
successors predecessor bigrams = map snd matches
where matches = filter (\p -> fst p == predecessor) bigrams
@Jamil
Jamil / demobigram.hs
Created December 23, 2016 22:16
Demo of bigram model use
x = ["the", "quick", "brown", "fox", "jumps", "over", "a", "lazy", "dog", "who", "jumps", "below", "the", "white", "rabbit", "who", "jumps", "over", "the", "green", "turtle", "who", "jumps", "above", "the", "lazy", "cat", "who"]
grams = bigrams $ bigrammap x
genx = gen grams pseudorand 1
@Jamil
Jamil / xorshift.hs
Created December 23, 2016 22:16
XOR Shift pseudorandom number generator
pseudorand seed = (c * 2685821657736338717) .&. (2 ^ 64 - 1)
where a = seed `xor` (seed `shiftR` 12)
b = a `xor` (a `shiftL` 25)
c = b `xor` (b `shiftR` 27)
@Jamil
Jamil / gen-bigram.hs
Created December 23, 2016 22:16
Generate a string given a bigram map, a random number generator, a seed, and an initial token
gen :: [(String, [String])] -> (Int -> Int) -> Int -> String -> [String]
gen lbs rand seed x = case lookup x lbs of
Just [] -> []
Just followers -> nxt:(gen lbs rand index nxt)
where nxt = followers !! (index `mod` (length followers))
index = rand seed
Nothing -> []
@Jamil
Jamil / bigrammap.hs
Created December 23, 2016 22:15
Create a map of successors, indexed by the predecessor token
bigrammap :: [(String, String)] -> [(String, [String])]
bigrammap bgs = zip leaders followers
where followers = map (\l -> successors l bgs) leaders
leaders = nub $ map fst bgs
@Jamil
Jamil / successors.hs
Created December 23, 2016 22:14
Generate a list of potential successor tokens given a word, from a bigram model
successors :: String -> [(String, String)] -> [String]
successors predecessor bigrams = map snd matches
where matches = filter (\p -> fst p == predecessor) bigrams
@Jamil
Jamil / bigrams.hs
Created December 23, 2016 22:13
Simple Bigram Generation
bigrams :: [String] -> [(String, String)]
bigrams [x] = []
bigrams (x:y:xs) = (x, y):(bigrams $ y:xs)