Advertisement
brsjak

АПС - Трик Со Карти

Aug 22nd, 2019
1,475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.74 KB | None | 0 0
  1. /*
  2. Трик со карти Problem 9 (7 / 8)
  3.  
  4. Перо прави трик со карти. Тој има шпил од 51-на карта (некој некогаш не му вратил една) од којшто ви дозволува да влечете карта. Тој, за трикот да биде веродостоен, не ја знае картата, но знае на која позиција се наоѓа. Мааната на Перо е тоа што тој не знае регуларно да измеша карти, туку ги зема првите седум карти, им им го превртува редоследот (пр. од 1 2 3 4 5 6 7 ги реди во 7 6 5 4 3 2 1), потоа зема една карта од превртените и една од врвот од шпилот и го става на крајот од шпилот, така се додека не ги потроши сите седум карти. Со тоа остварува едно мешање на шпил. Ваша задача е, да изработите симулцаија на ваквото мешање, такашто за дадена N-та карта т.ш. 1<=N<=51, вие ќе му изброите колку вакви мешања треба тој да направи за на врв на шпилот да дојде извлечената карта.
  5.  
  6. Име на класата: card_trick
  7.  
  8. */
  9.  
  10. import java.io.BufferedReader;
  11. import java.io.IOException;
  12. import java.io.InputStreamReader;
  13. import java.util.Collection;
  14. import java.util.Iterator;
  15. import java.util.LinkedList;
  16. import java.util.Queue;
  17. import java.util.Stack;
  18. import java.util.NoSuchElementException;
  19.  
  20. class SLLNode<E> {
  21.     protected E element;
  22.     protected SLLNode<E> succ;
  23.  
  24.     public SLLNode(E elem, SLLNode<E> succ) {
  25.         this.element = elem;
  26.         this.succ = succ;
  27.     }
  28.  
  29.     @Override
  30.     public String toString() {
  31.         return element.toString();
  32.     }
  33. }
  34.  
  35.  
  36. class LinkedQueue<E> implements Queue<E> {
  37.  
  38.     // Redicata e pretstavena na sledniot nacin:
  39.     // length go sodrzi brojot na elementi.
  40.     // Elementite se zachuvuvaat vo jazli dod SLL
  41.     // front i rear se linkovi do prviot i posledniot jazel soodvetno.
  42.     SLLNode<E> front, rear;
  43.     int length;
  44.  
  45.     // Konstruktor ...
  46.  
  47.     public LinkedQueue () {
  48.         clear();
  49.     }
  50.  
  51.     public boolean isEmpty () {
  52.         // Vrakja true ako i samo ako redicata e prazena.
  53.         return (length == 0);
  54.     }
  55.  
  56.     public int size () {
  57.         // Ja vrakja dolzinata na redicata.
  58.         return length;
  59.     }
  60.  
  61.     public E peek () {
  62.         // Go vrakja elementot na vrvot t.e. pocetokot od redicata.
  63.         if (front == null)
  64.             throw new NoSuchElementException();
  65.         return front.element;
  66.     }
  67.  
  68.     public void clear () {
  69.         // Ja prazni redicata.
  70.         front = rear = null;
  71.         length = 0;
  72.     }
  73.  
  74.     public void enqueue (E x) {
  75.         // Go dodava x na kraj od redicata.
  76.         SLLNode<E> latest = new SLLNode<E>(x, null);
  77.         if (rear != null) {
  78.             rear.succ = latest;
  79.             rear = latest;
  80.         } else
  81.             front = rear = latest;
  82.         length++;
  83.     }
  84.  
  85.     public E dequeue () {
  86.         // Go otstranuva i vrakja pochetniot element na redicata.
  87.         if (front != null) {
  88.             E frontmost = front.element;
  89.             front = front.succ;
  90.             if (front == null)  rear = null;
  91.             length--;
  92.             return frontmost;
  93.         } else
  94.             throw new NoSuchElementException();
  95.     }
  96.  
  97.     @Override
  98.     public boolean addAll(Collection<? extends E> c) {
  99.         // TODO Auto-generated method stub
  100.         return false;
  101.     }
  102.  
  103.     @Override
  104.     public boolean contains(Object o) {
  105.         // TODO Auto-generated method stub
  106.         return false;
  107.     }
  108.  
  109.     @Override
  110.     public boolean containsAll(Collection<?> c) {
  111.         // TODO Auto-generated method stub
  112.         return false;
  113.     }
  114.  
  115.     @Override
  116.     public Iterator<E> iterator() {
  117.         // TODO Auto-generated method stub
  118.         return null;
  119.     }
  120.  
  121.     @Override
  122.     public boolean remove(Object o) {
  123.         // TODO Auto-generated method stub
  124.         return false;
  125.     }
  126.  
  127.     @Override
  128.     public boolean removeAll(Collection<?> c) {
  129.         // TODO Auto-generated method stub
  130.         return false;
  131.     }
  132.  
  133.     @Override
  134.     public boolean retainAll(Collection<?> c) {
  135.         // TODO Auto-generated method stub
  136.         return false;
  137.     }
  138.  
  139.     @Override
  140.     public Object[] toArray() {
  141.         // TODO Auto-generated method stub
  142.         return null;
  143.     }
  144.  
  145.     @Override
  146.     public <T> T[] toArray(T[] a) {
  147.         // TODO Auto-generated method stub
  148.         return null;
  149.     }
  150.  
  151.     @Override
  152.     public boolean add(E e) {
  153.         // TODO Auto-generated method stub
  154.         return false;
  155.     }
  156.  
  157.     @Override
  158.     public E element() {
  159.         // TODO Auto-generated method stub
  160.         return null;
  161.     }
  162.  
  163.     @Override
  164.     public boolean offer(E e) {
  165.         // TODO Auto-generated method stub
  166.         return false;
  167.     }
  168.  
  169.     @Override
  170.     public E poll() {
  171.         // TODO Auto-generated method stub
  172.         return null;
  173.     }
  174.  
  175.     @Override
  176.     public E remove() {
  177.         // TODO Auto-generated method stub
  178.         return null;
  179.     }
  180.  
  181. }
  182.  
  183.  
  184. public class card_trick {
  185.     public static int count(int N){
  186.         // Vasiot kod tuka
  187.         LinkedQueue<Integer> deck = new LinkedQueue<>();
  188.         Stack<Integer> flip = new Stack<>();
  189.         int count=0;
  190.        
  191.         for(int i=1;i<52;i++) {
  192.             deck.enqueue(i);
  193.         }
  194.        
  195.         while(true) {
  196.             for(int i=0;i<7;i++) {
  197.                 flip.push(deck.dequeue());
  198.             }
  199.             while(!flip.isEmpty()) {
  200.                 deck.enqueue(flip.pop());
  201.                 deck.enqueue(deck.dequeue());
  202.             }
  203.             count++;
  204.            
  205.             if(deck.peek()==N) {
  206.                 return count;
  207.             }
  208.         }
  209.     }
  210.  
  211.     public static void main(String[] args) throws NumberFormatException, IOException {
  212.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in) );
  213.         System.out.println(count(Integer.parseInt(br.readLine())));
  214.     }
  215.  
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement