Skip to content

Instantly share code, notes, and snippets.

@Tarmean

Tarmean/Lib.hs Secret

Created February 20, 2018 15:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Tarmean/6edf2153806434e688d1fd77964248ed to your computer and use it in GitHub Desktop.
Save Tarmean/6edf2153806434e688d1fd77964248ed to your computer and use it in GitHub Desktop.
TAGCCGACGTTTTCACTCGTTCCCATGCATTATGCAGCTATTTCCAGTAATTGTTCCCCGCTCGATAAGGTGTCCAAGGACAAATCTTGAAACATATCGACGCTTGACAGAACCCGGATTCCATCGGCGGTGTTCACCTAGGGCACCTATCGTGTTTCCACTAGAGTAATCACAACAATTGAAAAGTAACTCGTGTTTCCCTTTGTGCCGGGCGAACGCTACGCCCCCAGCTACTACACCAACGTTAATCGAAGACCTTCTTGACAGTTGGTAGCACATACCCTACGCTGGGTACGAGCTGGAGAGCTGAAACCCGACCCTATGAGAATCCATACTTCAGACTGTATCGTTGTCCATATAATGGACACGGGGTACTTTTGGCATGATATTGTAATTTGTCATGCGATTGCCTCAGTATATCCCTGCTTACACGTGCAGAAAATATGTCCCATTTTACACCGGTCCACCATAACAATTATGCAACTTGTCAGTCGGGGTAGGCTCGGTCTCTGCGTCTAGCGGTGTGAATTACGCGTCCCACCTGCACCAACCACTGACTTTAGGGATCTTTGGGTATCGTGCATCTTGATTCGGTTCTGCCGGAGTTTTCTTAGCAACCAAAACACGGCACATCCAGCCATTTCTTTAACAGTTGAGAGTGTTAGGCCTAACAAATTTACGAGCGAAAATATGAGCTAAGACGAAACGAGACGACTGAAGAGACCCTACGGACGAGCGCCTTGAATATTGTCACCCCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTCGCCGAGTTTCTACCTGATGCGAGGCCTAAGAGGCAGTTGTGTAAAGGAAAATATTCCAAGCTT
TGCCCGAATTAGTCTAGCGAGTCAGGGTCCTCTCTCTAACCCCTCCCCTTCATAACGATACCAGGCCTCGTTGTCACTTCTGTTGCACAGGCGATGCCCGGCATCAAAGCTGGTGAGCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTATCGATCAGGTATGATAAAATGACCTGCCCCTGAAGGACATGAACGTGCACAGGGTAGAACTGCATGGGTTCCCCTGGGGTGGGTCGGGGACACAGTTGATGGCTGCTAAAGCGTTATCTGCGCTTGCGAGCTACAGCCCAACTTGGAACAAAGCGCACGATATTCGTGTGCTCGTATCGCAGTCACGTGTTATTTCGCTCTAGGGTCAACAGATTAAAACCCATTGCTAGATCATGGAAGACGACCTCTGCATCCCGTCGCTTAGCATTTCGAGCCACTTCTACGCACCGTTTACAAGACACAGAGAACTGGGACTCCAGGCCGGGCCTCAGTAAAGTGACGCAGGCTTAATCGGTCAGGCTGCCAGGCCCAAGGCTCGATAGCGATATCTTCTTTTACCTACTCAACTCTTCTGACCTTTGGAATCGTACCCTATGCTTAATATTCTTTCGACCCTTAGCTTAAATCAGCACTACTGGAAGCGACATTGAGTCCGCCTCCGTTCATGACCGCATGCATCAGGTATCCCAAGCACGTTCGCGAACTCCCTGTGCCTCTCGCGGTTTACTGCCACCCAAGTGCGATTATTACAACATACGTTACAGGGGTAGTTAAATAAATAAACTTGGCGCATTCGCGGTGTGTCCCGGCAATACCTGATCGTCCCCCATCCACAGGTGGTGCAGAGTGGGTAGGCGGGGG
ATAAGTCCCCACAGCTGTTCAAACGCTCTTCGCGACGTAAGCTGTCAAAAGGAGTGGGTTGCCGATGTTCAGTAAGCGTAACCTATAAGATAGATCGTCGGTATGTGCAAAGGTCAAGGAGATAGAGTTAAGCAATTTATCGTGGCCTTGCGACGTCTTCTGCGCTCCAGATGCGCATCCCTAAACACTCGATATATGTCCAGACAGTATCTTGTGACACCATTGTGCGATCTCTCGCACAATCGGCGTTACTTCAGTTGGTGTTATGTGGGTTACTCAGTTCAGGACAGTACAGACAACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTGACGGGGGTTGCACGACAGTCCCGGGCGTTGTTTACGCTACTTTATCACGGTATCCTGCGTGCGCCCCACTGCAGTTCGGGCGAGCTGACCGGCCTTACCCCTTTGGTACCCTTGACTCCTATCTTGGGTAAGGTCGTGTGAGATTAAATTTACTGAGGCTTCCCGAGGCGCACAGTTCGCCCCGCGTTGAATTTCGGGCAATTAGATTATACATGGTGTGGAAAGGTCCGTGAAAGAATAACCTATGGGGCATACTCGAATTCCGAGTATACTGGCACAAGCCTGACACGGCGGTTAGTAATCCTCTTTTTGTCGCGTCCGCCATCTTTCCTAAAGCTGCGCATCAAGGCGTCCGAAGGATAATAAGTCGAGATCACAGATATTAAGAGCAGGGGAATTAAACCCTTATGTGTGTCTTCTCTCTAGAAACATGAGAACAGCGTTACACTGCGACTAATCTCATCCAAACCTGCAGAACTGGGCTGCGAGCTGATGTATCTCGGTGTAGTCGACGACCTCA
CCCGGTAAAGAAACTCGTACAGTCCAATAGTCGGCTGGCCGGCTGGCAATTACTAGGGGCAAGTGCGGGGCCATATTTATTGTATCTCCGGGTTCCGACCTAGGAGGGCGTGACATGATCCCCTGCGGTGGCTACTATTCACACACCAATGTATGCGCCCTGAGCCCGTACGTTGTAACGCTCATCATTCCATGGCATCACTGGTTCCGGAACACCATTGGAACTGGTAAGACTCCAGCTTACGTCAAGCTGACCGGGGCGCGCTGAGTGTTCGTCTCAAACAGCTGACTGTTGCCATTCCGCCCGTAGCCTGCGTAAGCCGCATTACCATCTTCCTATTTCTACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTCTCCCTCTGAGCTCGGACGACCCGTATAATTAAGGAAAGAATTAACGACGGTCCTAGGCCCGCACTACCCGTCATGCGCAAATCCAACATGGAGCGTAGTACTGGTGGTTAATATGAGAGCAAGATGTAGATGTCCTAACCAGGCCTCGTAGTGAAGTAAACCTCTGAGTTTTAAGCACCTGGGGCCTACAAGCTTGTATTACTCTTGTGTCTAAGGGACCATTCTGTAACACCCAATTACCGGCCTCGGGGATCTACCAGGCGCCAAAACCTCAGCACTCCTACATTGAGGACCAATCGTGTTCCGAACGCTTGGCTTAACGGATGATATACCCATAAAACAGCTCGGTGTGGAGTCCGTACTATTGTGATCAGTTGGTGCACCACCCCTCACCACATCGAAATCTGATCCACGCACGTGGCAGTCCACCATGACGCAAAAGTCACCGTGTCCGTCTTGTAGGACGATGGCTCTC
CGGTCGGATGCCACTTTGCTAATGAGTGCTTCGACTCCCACTCCACTCGACCGAACGTGGTTGGTAATCCGGTAGATCTCTACCTTTACCGTCTAAGTAGGATCGATACCATGTTCCTGTAGATACAGGGAATCTATTAAGGGCCGATGTTTAGGTAGGTCCCCTTAAGCCCAGGCTACAAGGGTGTGCAGGCTCACTTGTCCGATTTTCTCTGGTTATTCGGAAGCTCTGCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTTTGTTATCTAAAGCCGTAAACTGACATCATTGAATGCTGGGGCTAAAGTTTACGTAAGCAGGCTATTTCAGAAACCTCATCCTAAAACCGCACACCGCTCTAATTCAGGATAGTTGCGGGTGGGCACTGCATGTGCTATATTGACAATCGGTACTGGGTTTAGAGATTTATCATTGATTAAACTACCCAGATGAGATGTCGGCTCTTGCGAATGACCGGCGCCCACACGGTGAAAAAAATGTTAACAAGTCATTCGGCTCAGTATTCTATGGCTTAGTCCCCCCCCACTGCAGGATAATGTACGGTTATAAGAATCATTACCCCGGGCCGAAAGTTTATAATTGCTATGAACTATGAAATAGCCCCTTATATAACAGGATGAACGTGAACGGTTCATCATGTTTAAAACTTGGTGTTATGTTGACGGTAGGCGGGCCTGACACTGTTAGTAGCGGGGCGGGAGTAATCCTAGGCTTAACCTCATAGTCAGAAGAACTTTGGTATTGGCCGCGGCATGGTTCGCTATCGGATATGTTTTTCATATGGCCGTCCCACATAAATGGGCTACCAACTACGAGATCCATTTAGC
AAGTTGACGCAGTATGTTCTTGATTATTACCGCGACTACAAGTCAGTGGCGGCCTACGTCAAGCTCTCTGGGGGGTTGAACTCTGTATTTACTATGTAATACAAACTCGACGTAAGCGGGCGAGACTAACCCGAGCGATTGTCGCGCGCTTTAAAGCAGATCTGCAGTTCGCAATGGTATGCTTTTATTGGGTCTCGTAACAATGCGGGGTTGTCTGCGTCAAGCTCCGTTCTATGGGAATGTCCTGTGGAAGGAGGTTTCGACCATTCACTTGGCATCGAGGGCTAAGGTTCACTAGTGCAGGCAATCCCTGGGGGTGCGCGGATTATCGTAGTGGAGGCTGGGGCGAATCTTTCTGCGGATGGTAGAGGTGGATGACTCGCAGGGTTGGGGGGATAAGAGGATGCCATCTGGCTGCCCCGTATATGCGTTCTTGGACCCGGTTAGGGTCTATCCTTCCCGGGCTTCCAGTACTTTGGCTAGTATGCATTAACAACCGATCGCACTTCATGGGTATTCTGATGACCTACTGCACATTTTTAAGTACAGAAATAGTGCATAAGGCCTGCACGGACTAACTCTCTATACACTTTATGAGGCACATCCGGAGTTCGCTCACGTCTCGCCTGACAGGTTCCGTATCCGAGCCCTCTTGTTTGCGAATATATGGTGGAGACATTTTTTTGCGTAGAAACGGTTGTTTACGGGAACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTTCAGGAACTTGAGTAGTTTCCGATGAGTCATAGGGTGCATAATTTAATATAAGGTACGCCCCAGGATTTTCGTACGTTGAGCGCCCTCGGGGCATCTCAATCCGCCACCC
GTTTAACAACTAGCCCATCAGCCGCAGGAGCTCCATGGTGGTACATAACTTAGAGTCAATGTAGATCGGCTCGAAGCGTTTCCAAGCTACCCCAGGCACATCCCATGCCTCGACGCCCAGCATCTAGACATATTGGCGCACAATCGCAGGCCGTTAAACCCCTTGAAAAGCTATCGTGCGGGTAGCAACACCAACTACCTCGCCTACTGTTATCCCGCAATGAATACTGCAGTTATGGTAGTCAGGTTATATAATGGTAATCACCAGCACTGTGCTGGACCACTCTTGTGGCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTTGGAAATTTCTGATTCCAAACATCCTTCTCAGGCCGCTAATGGAACACGTCGTATTCCGCGCGTAATACCAGAAAATCCCCTTCAGTATGGTCCATGACATCTTGGTCAGCCTACTACCTCCATCGTTCTTGTGACGGGTGGTGCATTCTATGCACTGCGGGCCAGACTTCGCCTGAATGCCGAGGTAACATCTCCGCGGCGAAATAGAGGGTAGTGTTCGCTGAACGCTTTCCGCTCGCCGGAGTTTTGTCTAGCCGAATTAGCAGCTGTTGGACTGGCGCGGGTGATCCAGAGTTCGTTCTGTGTGCTAGGAACACGATGTATCTACTCTGACGTTGGCTAAGGGCAGTCATCAAACAAATTGCTTGGGTCAATTGCCAGGTGCCAAGACCATGGGGCTCGCCATTAAACTTAGAACTCTGAAACCTGAGCCAGTAAACTCCTGAGGATTGTTCAGGTCTTGCAGACTCCCTTTACTCTTAACGAGTCGTATCTCCAAAGGAGGTAGATATGGTGAAATGGGGATAC
TAATCCACTAATAATATGCAACAGCGCTAAAACGGGTTCGGCGTTGACCGAAAGTCCATCCTAGTCCTCAAGGAGTAGAAACTCTGATAAACTCGACTGTTCGCACAATTTGTTCTGACCCTTGTGACCGACTATCGCAACGCATCTTCATTCAACCCCAATATGTTGCAGAATCCTTCGGACGGACGGGGTAGTGGACTACGAGACTACACTGTCTTTTCCTTCCTTTATACCTCCTCGACTAGCGCTCATACACATTAGCCGACTGTTTATTGCACCCTGGACGAGTCCAACTGTAAACGGCCAACTTGGATCGATCTTGGATTCTAGGCACCCGAAGACGAGGATCCGCAGCGGTCAAATTGACTACGCAGCGCCCTAAGAATCTAGTTAATGCATAAACCGAAGTCAGAAAGGAGATATCGTGCACTTACGAATAACAACGCTACGGAACGTAATACATGGTCAGGCGTATTTATTGCGCCTTTCTTTACTACTGAGGAGGCACGCCTACCTATGGACGATACACTCCTGCGAGGTCGGCCGCGCTATGGGGTAGTTTGGTCAAAGGCCAATAAGGGCGCATGAAAACAAGCGATGGTTGGGCAAATCGACTACATGCGCCGATCCAGATTAGTGCTTTCCGTTATACTCGTACGGAATCTCAGCATCCTACCAGACCCTGACACGAAGACTCCTCGATGCTTGGCGTTCACAATGCCCGCAAGGTCTAGGCTCTTGTCGCGCCAGATGCGGAGATGATGCGCGAACCACGAGGCGAATGGTCCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTAGTGTGTGGCGGGATCAGGGGTATAGTCTAGCA
TACTACTCCTATAGGGTCTGCATGATAGAAATATAAAATAGGTCAAAGGTCGATGTGTCTGTCCGCCTGAGCCTGTGGCTATTGTATACGCGAATAGAGTACCGATATACGACCGGCGTACGTCGCCACTGTCATGGCCTTAGATTACTGTTCACAGTCGTACCAAATCTATAACTCGGCACTGGTTCAACACACCCCTTCAGGGCGTGTTTAATTCTATCAAGTTTTGGTTTCAAGAACGAACACTACAGCTGCTGGGATGGCTTGGGTATAGCTCTATAGATACGATCACAGTGGGCCTTCGTTGCCCCTAGTCCGCTTCGTGTAGTGACTTTCGATGTCCCTAGGAAAATGGCCGATTCGCCGTCCAGTGGTGTAGCCTGAGCCCACGGGAGGTGCAAGGTGCCATTTGCTATCAATCGCAAATCTTGCTAAAAAAACGGCTGTCATGGCTAAGTTATTTTTTTGGAGTCATTCCCCCAGCCCACCTTGCAGCCGGATCAATATCCAGCTAGTTAAAGAAAATATCAAGAGGGCCTTGAATAGTAGTGGTGTCAGGGAATAAGATATTTGAACGAACGCCACCTTAGTGTCGAATTCCTTAAGTGGGACTCACCGTTGATGCCCAAGGATCGATGCTATCCTCCCTGGTGATCTATCGACGAGTTTCCAACCATGGGCATCACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTGGTTTTTTGACCCCCGAGAATTTGTCTGTAATCACTCCAATCCCGAAACCTAACCTATGCGTCTCGTTATATGCTAGGGTACGCCTTGTTGAAGAGGCGTAGACTTTTGAGCTAATACAAGCGCTCGCGACTGTG
AATTGCTGGATCATGAACTAAGCTTCAGCCTACACTCGCCGCTACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTCGGCAGTGTTTTAAGAAGTTATTATTCCTCAATGGGGCTCAATTGCCTGCTTAAAGTCTCCCCCATGGCACGGTATCTGACGAACACGTCTTTACGGAGCGCACATTCCATTTCGGCAGCTTTATAGTCTCATGTATCTTCGACAGGGCTACCCACATCAGAAGCGCCGAGATCCACTACAGGCCCGCGGGGTATTCGTAGGTGCGCTATAAGCTCGTTGCTTTGGATGTAACAGAATTCTGGGGCTCAATTCACACATTGGGTCATGGGTCGATTAATCTCGTGCTTAATCACTCCACAATATCCTTCGTGCGTCGCACGGGGGGCCGCGATTCTTAAACAGTTCTCTTGAACGGTCAGGCCCAGAAGAGAAAGTTGGACTTTAAAAATGCAGAATTTGGACCAGGGGATCTCACAGCAGAATAGTGTGGTATACGTCATTTCCCAGTTCCGGTGCTGAGGGGCATACGGCGGATGCCAATAGTCTGTCCAGTACCTCAAAGAGTCTGAATGGCTGGTCCCGGTTCGCCCCACTGTAGGTTAAGCAGTACGCCGTACTTGACACAGTCAATTTGCAATCCGTCGCAACGGTGTGCCAAGGATGGATTCTGAGGCATGTCCACCGTTCCCAATTCCTTGCGCTTAATAATGGGCGCGTTACATTGTGTACATCCACTCTTCATGAGCCAACCTAATAACTCGTTAGCAGGTACTGTCATGGTTTCGTGAAAGTCCAAGAGACCCGTCAGAAGCTTCCAGTGAGGCTGCGCCGCCAC
GTTGTGACCTCTTCGGTCGGAGGCTATTGAGGGTAAGGGTTGAGTATATTAACCACCAAATGCCAGTGACAGGGAGGTGTCTGCCTCTACCCGCTTATTTACGCGGACTATATGCATTAGGTAGTTCCTAACGGTCGTTGAGTATTGTGATCCGCGTGGTGATTAACCACGCTATGAGCTTTCATATAGCCTGTTACGACGACTTGTGTAGTAGTCGAGGTCACTTACCAGTAGCATCTTGGTCGGCGTAAGCGAGCCTAAACGGTATGGACCGGAAGTGGCACGTTCCTGTGACCCTTCATCCTTTGATGGTTAACAGGGACCTAAGAAGCACACACAAGGCAGGACTGCCGTGGGAGATGCTCTGAACACAGGACCTTGGGGATAAGCTAGCAACGGCGGAATGTGCCCAGCAATCCGGATCAAGTACGGTAGATCCAGCCTTGCGCTTGCGGCTGTTCATCGGCACCGATATCTTTTGCCCCGTACTTACCTATGCACCGCGCTACGCCACCTAATAGTTCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTGTTGCTGCACAACTTCTTCAGCGACTAATCAGCTACTTTCTCAGTTAGAGAAGTCTGGGTTTCTTTGCGTATAGCCAGGCGGGTGGTCCGGTATACCGAGTCTACACAGGTGTAGAATCGGATATCAACCCATTCCCCACCGGGTTGGTAATTCGGTAGAAAATAATCCCATAGGTAACATGACCGTGCGTTGTTGCACGGGCGTGCTTGTGTATGCGGCCAAAATCATAGGTTTAGAATTGGTATCAGGGTCTAGCATAGACCTCTACTTAGATAGGATGCGCATAACACGCTTCG
GTATTGATCAGGGTGGACATCTGTCCATACACACCTCTGACAATCCAGCCTCTTAAAAAGAAATCAGCGCCTCGCACCGTTGAGTCCTCCTACGGGATACTTGAGCAGGTGTCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTCTAAGAAAACGTCGCAAGTACCTTTCATGTAAGCAAAAACCGTGTCTTGGACCGGGAAAAGCTGCGGGACGCGCTGATACGGTTTTGGTAGAGACGACTGAGCCAGTACAGCTTATGCGTCACCGAGACCTGTTCCAATGGTTGTCAAGGACACTATATGGTAGGTATCTTGTCTTTTATTAGCGGGAATGATTGTGTACCTTACAGATCCAATCCTCGCGGTTACTCACTAGTCAGCTATGTAGGCCTACTTGCCGCAACATATCTCAGCTCGTGAGAGTTCGCATTCCTATTTCCCAGCGCGGTATACAGGTTTGTCTATTAGGAGAAGATGGTAGGCAGGCGCAATGTAGACACCACGTAATCGCTGCACAGACCATTCCGAGCCGGCCCGAGCCCCCTTAGGCGCTACAATAGAGCTTTTAGAGCTCTGTCTGTCATCTTATCTTTTCTGTGTATCGCTACGAAGGCAGGCAATCTCAACACGTCCATCTATTTGCCAGTGCCTCAGGAAAGGCATGTCATTGGTACCCGGCGCCGTTCGACATACCAGGTATGCGAAGCTAATAGTATATGAAGCATTGCACCGGAACTAGCACAGACAACACTTCGGCCTCGAGCTCCATGATCATGTATCCGGTGAATCATCAGCGTAGCGTCATAACACATCGAGGCTCTCCTGGTTTCGCTTTGCAGACATTTCAGCGT
GGCGGACCTATGCCCCATGTAAGTTTTATAATAGTATCTTCTTATCGGCGCTTTATCTGTCCTTCTCCAGCACAACTGATACGCAAGGAGCAGATACTGCGCGACCTGTTGGCCACATGGATTAACCGGTCCCTTAGAAGTCCCCACGGTGCGGCATGCCCTCGGATCGTTAGCGTATACTCCACTCGAGAGTAAAAGAGTGCGACAAGCGATGAAAGGTCATACATCTGAAAGGGACCCACCGTTGTTGCTTCCAAACATCATCGTAGAAATCGTAATTGTCCTTCCATAATAGGGGCATTGCTCCAGGGCGCGGTTCGCCGGGCTTGGCGCTCTCTATAAAAACTTTGTGACTTTTGTGGACATATGAGGGAACACCCTTGACCGACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTGATAATTTGTTTGCAGACCCCGAACTGTATATGACTCAACCTGGTCGTTCCCAGCAATAAAAGTTCTCAAGGCCTATGATGGGTCTGGTGCCCACTCCTACCATGGTTCTTCGTGAATCTAACTATTGTCACGCTTGGTATGTTTATCCTCCGGGAGACCGTGTTGAACCCCTACTTTCTAAATTTCGAGAAGGTCGGTAACCATCTCTTATCTGTCTGGCACTATTCAGAGCCGCCCGTGCGAATTCTCCCCCATTAGTACGAATCGAGAACCAGCGCGCTCTTACGTGGCCGTATTGCTACATAAACTGAGGATTTGCGAGGCGGCCATTCTTTTCTTCTATGCCATTAGTGTGGAGGTACTGCAAAAATACGCGAAGCTCGACGAGTTTAAGTGGAAGCACCTTAGTTGTGGTTGCCCAAGGCTATGCC
AGATAGGTACGTTAGCGTCTGGAGTCGGCCATCTGGCATATTTTGGCCAATATGTACATAAACCGAAGAAATTACTCATTACAAGGCTGCCCTAAGTTTCCATGAACCCAATCTCTAGAATTGATCACAGAGCCACTCGCCTCCAGGGCAGCGTTGCCGGTATACTCAAAGCGCAGGTAGCTCACTTCCTTGATAAGAAGCGCAAAGCTTCACGAAATTTAGAACATCCGTAAATAGGCCGAGGCGGCCGGGAAACTAAAATTAGTTACATGCGGACTCTCCCAAAACACCCGACCTGGTACTTCGATGATGCGTATTCTTGCTGAACATGGTTCGGATCCTGCCACTAAAACGGTATGGCAGAATAGGGGTACTCAGTTAGGCGAGGGATCCATGTCGGACGCCCGCCAATACCCCCAACATTAACCAGACTCAGTTCTGCGAACAGTATACGAGCTCCCAGGTGGACATCCCGGTTCGAGGACTTCGTCTGCACAGTGAATATGACATGGCGTCCGACTTAAAATTAAACTGGCTATTTGTCTAGAGATGCACTATTGGCGGGATTAGGCAAACTGCTTCGGATAACTTGAGATGGACTCTAAATAATACTCCCCGAGTGTATGTTTGATATGCCCTAACATGCTCAATACACTGGCGCGAAGCCGTAGGCATTGTGTGTCACATGTGATAGGGACCGAGAACGTAGGAGGTTTCGTCGGTGTCATCAATAGACACATATGTGATAGGCCCAGGCATCCTACGCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTCGTAGACTCGGTGACGTCACAGGTCTAGCAACATTTATCCGGCTTCGACAGAACC
ACGAACAGCTGCTAGATTGCGCGAGGGGATGCCGGATTGCGCTTAGCCAGGGGGCTGGCCTCTTACTTGTTGTATGCCTTGGCCGGTGTCAGAGGGCGAGGAGTCGCATTCAACTAAGTCCTATAGCGTGGCTTGCTTGATGGTTGAACGGTTTCTTCGAGTAAAGCCCTGACCCTTAAAGGCCAAGGACTGCGCCGTCAACTTGGCTCGCCGCAAGTCGCTGAGCGCATATCACGCGGCTCAATCTCATACCCAGGATTTAAGTGGACGCGGAATACACCCTCGCGCCCGTTTTTCCGCGTAGACTGCGCAAGTACAGGGGGGGGGGTATACATACGGATTGTTCGGTACAGACCCCGTGGGCGGTGGCTTCGATTTACGGTGTCTGACAGCTCTTGCAAACAGGGCAGTCTAGCGCGACTGCCACGATAGGGCTCATTCCTTCAGCAGCGTATCCATGTCGCGGTCTGAGTCAACCTTAGGGAGGGTTGACCAATCAAGGATAAGAAGACTATTGTCGTTTCTATCAAAGCTTACCAATACGATTTAATTGAGCACAGATTGAACCCCATCTATGGGAAAAATCTCGCACCCGTTGCTATCCCACAATCAACAGAGATCGCGCAGGAGATCCGGACGTTCGTCGAATTGCTCATTGATTGAGCAGCACAAACCTATATTTTCTAAGGGCCCACCCTAGCGCCGTCCCTCGTTTCCTTCTGTCTAAGGCGAAGACTTAATCCTAGGAGGTGTCGCACGAACGAAAGGCGCGCGCGGGCGCATACAAACACCGCCCTCGCGCTAGAAGCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTTTATTCAGAAGC
CGTCGGAAGATTGTACCAAATTTTCTTTAATAGGCGATGAAACTTAGAGAATACTTCCTTTTGGTCAAGTCGTATTCTTAATGGTAGGTCTTTGCGACGGGATCACAGTACTACGCGTCACAAGGGGTCGCTTATTCACTGCAACCGACATCCTCTTAAGCATGCACGCCATATAGTGAGTCAGATAGTTAGTCGGACCTTTTACGCACTATGATAGTAACAGCCGTCTCCGGGTTTCCTGAACCGTCTTCCAATCGTGCGTTCTTATACCGGACTTTGCCGCTATCTTCCTCTAACATGTGCCAACGCAATCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTGTTCTGATAGGCCTCTGTGCAGGAAACAAAACCGGTATCAGGGACTGACAGTAGCGTTAACAGCATAACTCATCTTGAAGCGGCCACCAGAGGGCTTCCTTTCCGATAGTTAGGACTTTTAGCAGGGCTGCTACTCTGGGTGTGACTCTTTGAGCCTCAGTCAAGTGGCAAAATGCCGCACGTCTCTTCATATGTCAACGGATAGCCAACCCATCTCGTTTGCCGCTAAAGACTCATCCTTGAACTTCAACGTCTGCCTTGCAGTATCGCGTCGACCGCATCTATACACTCCCTGACGCCACATGCCGTATACGAATGGTACTATGAGGTAACAGTCGAGGCCCCCGTTTACCAGGTCGACCATCCATAGGAGAACCAGTAACGAATAAGAGCCGCTACTTCCAAAGAACCGTTGCACCGCAATGGATCGTATACGTCTAACTGTACGACGCGCGACGTGCATCCGAACTCCAATGAGAACCGTATTCTACAGCTTTAACCATGGGGA
TTATTCTTAATAAGTCTTGAAGGAGTTCTATATTTCCGATCAATGGGGGAGGGAGAACCGTGTTCAATGATTGGGTGGACCTATCTGTACCCTTCCCGCAGTCCAGCTGCGACCCGAATTGATTTAGTTTAAGAGGGCAATCGGCGGGGATATGGCTTTCCCCGTTGGGCTGAGGAAGATAGGAACGGAACCCATGCCCATATACCCGAATAGCAGGTGCGAGAAACGCTCAGTATTTCATTTAAGATAATACGGGGTACAGCGCGGAACGGGAGTGGCAGCGTTAACCATGGCGTAGGTTAGCAGAGGATTATTAGGCGGGCGCTGCCCCGCCGGCACCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTCGCTCTCAACGTTGTGAAGGAATTCACTCTATATTGACGTGCCCATTCCCTGCGAGCGGATCGAAAAACGTAAATTGGGCTGGGCAATTCCCCTGAGTGCATAAGTGGCAGGTGTCGTTACAAGGCGCTGTGCTACCGAGGGAACTAGTAGGGTTCCCCGGGGACGCTCTTCCACGCTGGTATGTTGACGGTGTTTCTGCTTCTCTGTGTCCGTTTCCCCCTTGTTCGTGACCGAACCAGAACGGGTTCATTGGAGTCGGCCAGTATCGGGCTGTACAAATATAGACCCGTTTCTCTTATGGGTAACCTGACTGTGAGAACGATGTGTACACTACGAGAAAGAGTAGAATGTTTCGGTGCCGCCGTCGCTGGCGTCGTTGCCTTGATAGGATTCCTTTTATGTGATATTTACGAGTCTACTTCAGTGAAGTGTCCAGCAATGTAGGCGATGCTCTCGGTCGTTCGGCTAAGCCACTAGACG
TACCCTTGTAATATTAGCCTTTCCATAATATTACTTCCGCATTGCTGGTGGTAGCTTTTGTATCGCTTGCAAAGCATACTTGACTCCGTCGCGCTATCCGACAGAGCCCCACCAAGCCTCTATGCCCTTTCGCACTAAGCCGAAATGCGTCCCACCTATTGATCCTGCCTCTTTTGTCCCGGCAAGGAGACCGTGCGTTTAGAATTTTCTATAACGGTTCGGTTTTACTAGCATGCGGGTGGCAATAATTACACTGCGAATCTTGTTGCGGTTAAGGCATAAATGGCACAGAATGCAACAAGGCCCTCCTTCCCTCGCCCAACTATGTAGATCCAGTGATTAACAAGAACCGCATAAAATGCGACGAGTTATATCGAGAGGCGCGAAGCAGCGCTAGTTAGCTCGCCCCACGGGTGCCGCACGTACAATCTTGTGGGCCCCTTAATTAGTATGAACTGCTATACCACGGGCAGGCCACGCGCCCCTAATGTTGGTCTCTTGACCAACCTAGGAACTTACCGACTAGAGTTTCTCTAAACATGAATCCATAAGAGAATTTGCAGTAAGCATCATGCGGCGGCCAAACGGTATTTCCCGGCTTGGTTCACTCGGAGAAAGACTACACCGGCACGACCCCGGTACGTTACACTGACTATCGCGACTCCCCCTTAATACAGTAGTACCGCGCTGGGGTTTAGATATCTGTTTATTGTCCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTTAACCATGGAGGAACTTCCAACACTCGAGGGGGCTCGGTATCGATTAACATATTTAAGCCCCGGCGCTAGGTGATACAACAGCACATGTGCGAAGACATAATTCCAG
GTCAACCTGAATTATGCTAACCAGTCCCTTCTACCGGGGCCCATCATGTGTTCCTCCTGGGAATAGCTAGCCTAGCCTATTTAACGTACGTTATGATGAAAGCCGTAACAAGCACAGGTCCAGTTTACATGTCTCGTCTGTCAGTAGTTTTAACGGGCGTACGTACGCTGTGATGTAAAAGGGAAAACCACGAATTCCGGTAGCGGGATGTGGACTGGAAGTGAGCTAACCTTACTATTTTTGGTGGTCAAAGTACCGGTAATGCTCAGACTCCGTAAGATACGCTGTCAACCGTTGGCACGGTGGGTAACTAAGTCTCGACAACCGAAGGCACATCCTAGACAAGCGTAATCTCTTGCGCCTTCTAACAATATTAGCCAGAGCCAGGTCCCTTGCCCCGTATTACCGCGGGAGCACTCATAATCCATACAGACAGGCGACATACCATTGGCATAAGGAAGCATAGGATTAAAAGTGTAGGAGCACCACTCGGATGCAAGACAGTACTCATAAGTCCGAAAAGAGCTGGGCCAGAGACTTAATGGGCGAGACCGCTATATTGGCCAGATTAGGAACTCAACTGACGCTAGTCCGGAAGTTCGCGCGCGGTTGCAAGCGGCTTGATCCTGTGCCATGACGAGCCACTCTCCATGGTGAGGGGGCCCTTCACGAATTTGCTTGGAAGGGGTATATACCAGCCGAAGGGTAGCAAATGAATGCTGACACTTTCCTCGGGCATGGCATTAAGTAGCGGAGTGGGTGCACTCCTGTCCGGCGATACCTGAGTTAGGTGCGGGAGCGAGTTAATGATCGTAGTATCGCCAACTTAGTGAAACAGTTGTAACGGCCGCTCTATGCGAATTATCGTGTTTTCCAGCTCCAATAAGCTACAGGAAGGATGCCTGGCCTTGTCACTTTATTCGGGAACGAATAGACGTGGAGCGTCTTCCGGCCACTCCTAAGATATTCAACTTTAGGACGTATTCACGCCCCTCCGCTG
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE BangPatterns #-}
module Lib where
import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified Data.Text.Internal.Fusion.Common as S
import qualified Data.Text.Internal.Fusion as S
import qualified Data.List as L
import qualified Data.Text.Unsafe as U
-- import Data.Text (Text(..))
import qualified Data.Text.Array as A
import Data.Word (Word64)
import Data.Text.Internal (Text(..))
import Data.Bits ((.|.), (.&.))
import Data.Text.Internal.Unsafe.Shift (shiftL)
longestCommonSubstring :: [Text] -> Text
longestCommonSubstring entries = go [""] "" where
go :: [Text] -> Text -> Text
go [] longest = longest
go current@(s:_) _ = go (filter substringOfAll $ concatMap step current) s
substringOfAll :: Text -> Bool
substringOfAll s = go entries
where
go (x:xs) = s `isInfixOf` x && go xs
go [] = True
-- {-# NoInline pred #-}
-- {-# NoInline step #-}
step :: Text -> [Text]
step s = map (s `T.snoc`) ['A', 'C', 'G', 'T']
isInfixOf :: Text -> Text -> Bool
isInfixOf needle haystack
| T.null needle = True
| isSingleton needle = S.elem (U.unsafeHead needle) . S.stream $ haystack
| otherwise = not . L.null . indices needle $ haystack
{-# INLINE [1] isInfixOf #-}
data T = {-# UNPACK #-} !Word64 :* {-# UNPACK #-} !Int
-- | /O(n+m)/ Find the offsets of all non-overlapping indices of
-- @needle@ within @haystack@. The offsets returned represent
-- uncorrected indices in the low-level \"needle\" array, to which its
-- offset must be added.
--
-- In (unlikely) bad cases, this algorithm's complexity degrades
-- towards /O(n*m)/.
indices :: Text -- ^ Substring to search for (@needle@)
-> Text -- ^ Text to search in (@haystack@)
-> [Int]
indices _needle@(Text narr noff nlen) _haystack@(Text harr hoff hlen)
| nlen == 1 = scanOne (nindex 0)
| nlen <= 0 || ldiff < 0 = []
| otherwise = scan 0
where
ldiff = hlen - nlen
nlast = nlen - 1
z = nindex nlast
nindex k = A.unsafeIndex narr (noff+k)
hindex k = A.unsafeIndex harr (hoff+k)
hindex' k | k == hlen = 0
| otherwise = A.unsafeIndex harr (hoff+k)
buildTable !i !msk !skp
| i >= nlast = (msk .|. swizzle z) :* skp
| otherwise = buildTable (i+1) (msk .|. swizzle c) skp'
where c = nindex i
skp' | c == z = nlen - i - 2
| otherwise = skp
swizzle k = 1 `shiftL` (fromIntegral k .&. 0x3f)
scan !i
| i > ldiff = []
| c == z && candidateMatch 0 = i : scan (i + nlen)
| otherwise = scan (i + delta)
where c = hindex (i + nlast)
candidateMatch !j
| j >= nlast = True
| hindex (i+j) /= nindex j = False
| otherwise = candidateMatch (j+1)
delta | nextInPattern = nlen + 1
| c == z = skip + 1
| otherwise = 1
where nextInPattern = mask .&. swizzle (hindex' (i+nlen)) == 0
!(mask :* skip) = buildTable 0 0 (nlen-2)
scanOne c = loop 0
where loop !i | i >= hlen = []
| hindex i == c = i : loop (i+1)
| otherwise = loop (i+1)
{-# INLINE indices #-}
isSingleton :: Text -> Bool
isSingleton = S.isSingleton . S.stream
{-# INLINE isSingleton #-}
module Main where
import Lib
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Data.Text (Text(..))
main :: IO ()
main = do
contents <- T.lines <$> T.readFile "inputs.txt"
let lss = longestCommonSubstring contents
print lss
--print $ longestCommonSubstring strings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment