mvCode

Spil , Trik so karti AIPS, Шпил АИПС

Nov 19th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.46 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.NoSuchElementException;
  5.  
  6. class SLLNode<E> {
  7.     protected E element;
  8.     protected SLLNode<E> succ;
  9.  
  10.     public SLLNode(E elem, SLLNode<E> succ) {
  11.         this.element = elem;
  12.         this.succ = succ;
  13.     }
  14.  
  15.     @Override
  16.     public String toString() {
  17.         return element.toString();
  18.     }
  19. }
  20.  
  21. interface Queue<E> {
  22.  
  23.     // Elementi na redicata se objekti od proizvolen tip.
  24.  
  25.     // Metodi za pristap:
  26.  
  27.     public boolean isEmpty ();
  28.     // Vrakja true ako i samo ako redicata e prazena.
  29.  
  30.     public int size ();
  31.     // Ja vrakja dolzinata na redicata.
  32.  
  33.     public E peek ();
  34.     // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  35.  
  36.     // Metodi za transformacija:
  37.  
  38.     public void clear ();
  39.     // Ja prazni redicata.
  40.  
  41.     public void enqueue (E x);
  42.     // Go dodava x na kraj od redicata.
  43.  
  44.     public E dequeue ();
  45.     // Go otstranuva i vrakja pochetniot element na redicata.
  46.  
  47. }
  48.  
  49.  class LinkedQueue<E> implements Queue<E> {
  50.  
  51.     // Redicata e pretstavena na sledniot nacin:
  52.     // length go sodrzi brojot na elementi.
  53.     // Elementite se zachuvuvaat vo jazli dod SLL
  54.     // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  55.     SLLNode<E> front, rear;
  56.     int length;
  57.  
  58.     // Konstruktor ...
  59.  
  60.     public LinkedQueue () {
  61.         clear();
  62.     }
  63.  
  64.     public boolean isEmpty () {
  65.         // Vrakja true ako i samo ako redicata e prazena.
  66.         return (length == 0);
  67.     }
  68.  
  69.     public int size () {
  70.         // Ja vrakja dolzinata na redicata.
  71.         return length;
  72.     }
  73.  
  74.     public E peek () {
  75.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  76.         if (front == null)
  77.             throw new NoSuchElementException();
  78.         return front.element;
  79.     }
  80.  
  81.     public void clear () {
  82.         // Ja prazni redicata.
  83.         front = rear = null;
  84.         length = 0;
  85.     }
  86.  
  87.     public void enqueue (E x) {
  88.         // Go dodava x na kraj od redicata.
  89.         SLLNode<E> latest = new SLLNode<E>(x, null);
  90.         if (rear != null) {
  91.             rear.succ = latest;
  92.             rear = latest;
  93.         } else
  94.             front = rear = latest;
  95.         length++;
  96.     }
  97.  
  98.     public E dequeue () {
  99.         // Go otstranuva i vrakja pochetniot element na redicata.
  100.         if (front != null) {
  101.             E frontmost = front.element;
  102.             front = front.succ;
  103.             if (front == null)  rear = null;
  104.             length--;
  105.             return frontmost;
  106.         } else
  107.             throw new NoSuchElementException();
  108.     }
  109.  
  110. }
  111.  
  112. interface Stack<E> {
  113.  
  114.     // Elementi na stekot se objekti od proizvolen tip.
  115.  
  116.     // Metodi za pristap:
  117.  
  118.     public boolean isEmpty ();
  119.     // Vrakja true ako i samo ako stekot e prazen.
  120.  
  121.     public E peek ();
  122.     // Go vrakja elementot na vrvot od stekot.
  123.  
  124.     // Metodi za transformacija:
  125.  
  126.     public void clear ();
  127.     // Go prazni stekot.
  128.  
  129.     public void push (E x);
  130.     // Go dodava x na vrvot na stekot.
  131.  
  132.     public E pop ();
  133.     // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  134. }
  135.  
  136. class LinkedStack<E> implements Stack<E> {
  137.  
  138.     //Stekot e pretstaven na sledniot nacin: top e link do prviot jazol
  139.     // na ednostrano-povrzanata lista koja sodrzi gi elementite na stekot .
  140.     private SLLNode<E> top;
  141.  
  142.     public LinkedStack () {
  143.         // Konstrukcija na nov, prazen stek.
  144.         top = null;
  145.     }
  146.  
  147.     public boolean isEmpty () {
  148.         // Vrakja true ako i samo ako stekot e prazen.
  149.         return (top == null);
  150.     }
  151.  
  152.     public E peek () {
  153.         // Go vrakja elementot na vrvot od stekot.
  154.         if (top == null)
  155.             throw new NoSuchElementException();
  156.         return top.element;
  157.     }
  158.  
  159.     public void clear () {
  160.         // Go prazni stekot.
  161.         top = null;
  162.     }
  163.  
  164.     public void push (E x) {
  165.         // Go dodava x na vrvot na stekot.
  166.         top = new SLLNode<E>(x, top);
  167.     }
  168.  
  169.     public E pop () {
  170.         // Go otstranuva i vrakja elementot shto e na vrvot na stekot.
  171.         if (top == null)
  172.             throw new NoSuchElementException();
  173.         E topElem = top.element;
  174.         top = top.succ;
  175.         return topElem;
  176.     }
  177.  
  178. }
  179.  
  180.  
  181. public class card_trick {
  182.  
  183.     public static int count(int N){
  184.  
  185.         int brMesanja = 0;
  186.         Stack st = new<Integer> LinkedStack();
  187.         Queue spil = new<Integer> LinkedQueue();
  188.  
  189.         // go polnam spilot so karti, im dodeluvam deden br od 0 do 51
  190.         for( int i=1; i<=51; i++ ){
  191.             spil.enqueue( i );
  192.         }
  193.  
  194.         while( (int)spil.peek() != N ){ // proveruva dali na vrvot od spilot e kartata so reden br N - Ntata karta
  195.             // kkartite od vrv na spil gi praznam vo stackot
  196.             for( int i=0; i<7; i++ ){
  197.  
  198.                 st.push( (int)spil.dequeue() );
  199.             }
  200.             // gi stavam kartite od vrvot na spilot i stackot na karajot od spilot naizmenicno, pocnuvajki so stackot
  201.             while( !st.isEmpty() ){
  202.  
  203.                 spil.enqueue( (int)st.pop() );
  204.                 spil.enqueue( (int)spil.dequeue() );
  205.             }
  206.             brMesanja++;
  207.         }
  208.        
  209.         return brMesanja;
  210.     }
  211.  
  212.     public static void main(String[] args) throws NumberFormatException, IOException {
  213.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );
  214.         System.out.println(count(Integer.parseInt(br.readLine())));
  215.     }
  216.  
  217. }
Add Comment
Please, Sign In to add comment