Kame3

Трик со карти

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