public Block(uint fileOffset, BlockCode code, uint length, ulong counter)
 {
     this.fileOffset = fileOffset;
     this.code       = code;
     this.length     = length;
     this.counter    = counter;
 }
Example #2
0
    private BlockCode[,] GetBlockMap()
    {
        BlockCode[,] arr = new BlockCode[7, 7];
        //arr initialize
        for (int i = 0; i < arr.GetLength(0); i++)
        {
            for (int j = 0; j < arr.GetLength(1); j++)
            {
                arr[i, j] = new BlockCode();
            }
        }

        //get blockCode
        Transform map = GameObject.Find("Map").transform;

        BlockObject[] blockObjects = map.GetComponentsInChildren <BlockObject> ();
        foreach (BlockObject child in blockObjects)
        {
            Vector3 localPos = child.transform.position;
            int     x        = Mathf.RoundToInt(localPos.x);
            int     y        = Mathf.RoundToInt(localPos.y);
            try{
                arr [x, y] = child.GetBlockCode();
            }catch (IndexOutOfRangeException e) {
                Debug.Log("Error " + e.Message + "  " + x + "  " + y);
            }
        }

        return(arr);
    }
        public ActionResult Answer(GetCorrectingCodeParametersModel model)
        {
            var    blockCode      = new BlockCode(model.InputData.Code.ElementaryCodes, model.InputData.Code.ElementaryCodes.Values.ElementAt(0).Length);
            bool   foundMistake   = false;
            string checkMessage   = "Верно. ";
            var    commentBuilder = new StringBuilder();
            int    codeDistance   = blockCode.GetCodeDistance();

            if (model.CodeDistance != codeDistance)
            {
                foundMistake = true;
                commentBuilder.Append(String.Format("Кодовое расстояние - {0}. ", codeDistance));
            }
            int detectableErrors = blockCode.GetDetectableErrors(codeDistance);

            if (model.DetectableErrors != detectableErrors)
            {
                foundMistake = true;
                commentBuilder.Append(String.Format("Количество обнаруживаемых ошибок - {0}. ", detectableErrors));
            }
            int fixableErrors = blockCode.GetFixableErrors(codeDistance);

            if (model.FixableErrors != fixableErrors)
            {
                foundMistake = true;
                commentBuilder.Append(String.Format("Количество исправляемых ошибок - {0}. ", fixableErrors));
            }
            if (foundMistake)
            {
                checkMessage = "Неверно. ";
            }
            model.Comment = checkMessage + commentBuilder.ToString();
            return(View(model));
        }
Example #4
0
    public override BlockCode  GetBlockCode()
    {
        //기본 형태 0 , 3 , 6 , 9
        BlockCode Q1        = new BlockCode('0', '0', '0', '0');
        BlockCode blockCode = base.MakeBlockCode(Q1);

        return(blockCode);
    }
Example #5
0
 public Block(BlockCode code, int type, string message)
 {
     mes       = new List <string>();
     this.code = code;
     this.Type = type;
     mes.Add(message);
     Console.WriteLine(message);
 }
Example #6
0
    protected BlockCode MakeBlockCode(BlockCode Q1)
    {
        for (int i = 0; i < this.blockDirectionCode; i++)
        {
            Q1.RotateAsLeft();
        }

        return(Q1);
    }
Example #7
0
 public Block(string inputMessage)
 {
     mes = new List <string>();
     string[] info = inputMessage.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
     code = (BlockCode)Enum.Parse(typeof(BlockCode), info[0]);
     Type = Convert.ToInt32(info[1]);
     for (int i = 2; i < info.Length; i++)
     {
         mes.Add(info[i]);
     }
 }
Example #8
0
        object GetRecordEnum(BlockCode bc, uint rc)
        {
            switch (bc)
            {
            case BlockCode.Module: return((ModuleRecordCode)rc);

            case BlockCode.ParamAttr: return((ParamAttrRecordCode)rc);

            case BlockCode.ParamAttrGroup: return((ParamAttrGroupRecordCode)rc);

            case BlockCode.Constants: return((ConstantsRecordCode)rc);

            case BlockCode.Function: return((FunctionRecordCode)rc);

            case BlockCode.Identification: return((IdentificationRecordCode)rc);

            case BlockCode.ValueSymtab: return((ValueSymtabRecordCode)rc);

            case BlockCode.Metadata: return((MetadataRecordCode)rc);

            case BlockCode.MetadataAttachment: return((MetadataAttachmentRecordCode)rc);

            case BlockCode.Type: return((TypeRecordCode)rc);

            case BlockCode.Uselist: return((UselistRecordCode)rc);

            case BlockCode.ModuleStrtab: return((ModuleStrtabRecordCode)rc);

            case BlockCode.GlobalValSummary: return((GlobalValSummaryRecordCode)rc);

            case BlockCode.OperandBundleTags: return((OperandBundleTagsRecordCode)rc);

            case BlockCode.MetadataKind: return((MetadataKindRecordCode)rc);

            case BlockCode.Strtab: return((StrtabRecordCode)rc);

            case BlockCode.FullLtoGlobalValSummary: return((FullLtoGlobalValSummaryRecordCode)rc);

            case BlockCode.Symtab: return((SymtabRecordCode)rc);

            case BlockCode.SyncScopeNames: return((SyncScopeNamesRecordCode)rc);

            default: throw new NotSupportedException($"Unknown block code to GetRecordEnum {bc} ({(uint) bc})");
            }
        }
            private void OnBlockCodeEvent(object o,
						       BlockCode code)
            {
                if (code == BlockCode.BlockStart)
                  {
                      blockCount++;
                      return;
                  }
                if (code == BlockCode.BlockEnd)
                  {
                      blockCount--;
                      if (blockCount > 0)
                          return;
                      IAsyncCommandResponseListener
                          listener =
                          slots[currentCommand] as
                          IAsyncCommandResponseListener;
                      if (listener != null)
                          listener.
                              CommandCompleted
                              (currentCommand);
                      pending--;
                      currentCommand = -1;
                  }
            }
Example #10
0
			public Block (uint fileOffset, BlockCode code, uint length, ulong counter) {
				this.fileOffset = fileOffset;
				this.code = code;
				this.length = length;
				this.counter = counter;
			}
Example #11
0
 public Header(byte[] data)
 {
     Code = (BlockCode) (data [0] | (data [1] << 8));
     Length = data [2] | (data [3] << 8) | (data [4] << 16) | (data [5] << 24);
     CounterDelta = (uint) (data [6] | (data [7] << 8) | (data [8] << 16) | (data [9] << 24));
 }
Example #12
0
 Block DecodeBlock(BlockCode code, uint length, byte[] data)
 {
     switch (code) {
     case BlockCode.Directives:
         directives = new DirectivesBlock (new Buffer (data, length));
         return directives;
     case BlockCode.End:
         return new EndBlock (new Buffer (data, length));
     case BlockCode.Events:
         return new EventsBlock (new Buffer (data, length), directives);
     case BlockCode.Intro:
         return new IntroBlock (new Buffer (data, length));
     case BlockCode.Loaded:
         return new LoadedBlock (new Buffer (data, length), directives);
     case BlockCode.Mapping:
         return new MappingBlock (new Buffer (data, length), directives);
     case BlockCode.Statistical:
         return new StatBlock (new Buffer (data, length));
     case BlockCode.Unloaded:
         return new UnloadedBlock (new Buffer (data, length), directives);
     default:
         Console.WriteLine ("Unsupported block code: " + code);
         break;
     }
     return null;
 }
Example #13
0
 protected Block(BlockCode code)
 {
     this.code = code;
 }
Example #14
0
 public Block(BlockCode code)
 {
     mes       = new List <string>();
     this.code = code;
 }
Example #15
0
 public Block(BlockCode code, int type)
 {
     mes       = new List <string>();
     this.code = code;
     this.Type = type;
 }
 public ActionResult Upload(HttpPostedFileBase upload)
 {
     if (upload != null)
     {
         string format = Path.GetExtension(upload.FileName);
         if (format == ".txt")
         {
             try
             {
                 using (var reader = new StreamReader(upload.InputStream))
                 {
                     Dictionary <char, string> codewords = new Dictionary <char, string>();
                     char[] separator = { ' ' };
                     int    blockSize = -1;
                     while (!reader.EndOfStream)
                     {
                         string[] symbolArgs = reader.ReadLine().Split(separator, StringSplitOptions.RemoveEmptyEntries);
                         if (symbolArgs.Length != 2)
                         {
                             ViewBag.ErrorMessage = "Пожалуйста, проверьте правильность введенных данных!";
                             return(View("Index"));
                         }
                         char   symbol   = Convert.ToChar(symbolArgs[0]);
                         string codeword = symbolArgs[1];
                         if (blockSize == -1)
                         {
                             blockSize = codeword.Length;
                             codewords.Add(symbol, codeword);
                         }
                         else if (codeword.Length != blockSize)
                         {
                             ViewBag.ErrorMessage = "Пожалуйста, проверьте правильность введенных данных!";
                             return(View("Index"));
                         }
                         else
                         {
                             codewords.Add(symbol, codeword);
                         }
                     }
                     if (codewords.Count == 0)
                     {
                         ViewBag.ErrorMessage = "Пожалуйста, введите в файл данные для построения кода!";
                     }
                     else
                     {
                         ViewBag.ErrorMessage = "";
                         BlockCode code             = new BlockCode(codewords, blockSize);
                         int       codeDistance     = code.GetCodeDistance();
                         int       detectableErrors = code.GetDetectableErrors(codeDistance);
                         int       fixableErrors    = code.GetFixableErrors(codeDistance);
                         ViewBag.Answer = String.Format("Кодовое расстояние - {0}. " +
                                                        "Количество обнаруживаемых ошибок - {1}. Количество исправляемых ошибок - {2}.",
                                                        codeDistance, detectableErrors, fixableErrors);
                     }
                 }
             }
             catch (FormatException)
             {
                 ViewBag.ErrorMessage = "Пожалуйста, проверьте правильность введенных данных!";
             }
         }
         else
         {
             ViewBag.ErrorMessage = "Пожалуйста, загрузите файл в формате .txt!";
         }
     }
     else
     {
         ViewBag.ErrorMessage = "Пожалуйста, загрузите файл!";
     }
     return(View("Index"));
 }